LeetCode 之 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(Java)

2023-10-31

LeetCode 之 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (Java)

一、题目

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。

示例:

输入:nums = [1,2,3,4]
输出:[1,3,2,4] 
注:[3,1,2,4] 也是正确的答案之一。

提示:

  1. 0 <= nums.length <= 50000
  2. 0 <= nums[i] <= 10000

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、解题思路

  最直接的思路遍历,遇到偶数时先把后面的数据往前移,把该偶数再放最后一位,时间复杂度 O(n^2)。

  比较典型的就是双指针,同时从前后遍历数组(遍历过程保证 start < end),前面遇到偶数时停下,后面遇到奇数停下,然后交换,再继续直接 start >= end。

三、代码

class Solution {
    public int[] exchange(int[] nums) {
        int n = nums.length;
        int start = 0;
        int end = n-1;
        while(start<end){
            while(start < end && nums[start]%2!=0){
                start++;
            }
            while(start < end && nums[end]%2==0){
                end--;
            }
            if(start < end){
                int temp = nums[start];
                nums[start] = nums[end];
                nums[end] = temp;
            }
        }
        return nums;
    } 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode 之 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(Java) 的相关文章

  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 当我和ChatGPT聊Everything as Code

    以下是我和ChatGPT的聊天原文 一开始还有点惊喜 震惊 越到后面 越感到失望 网络上大肆宣传ChatGPT要代替人类的文章 我怕是专门炒流量赚钱的吧 我个人觉得 它离代替人类 还远着呢 Everything as Code 的目标又是什
  • 你好Avalonia框架

    起因 公司事业部是做移动等营业厅办理相关业务 无纸化系统的 简单的说就是以前去营业厅办理业务都需要各种打印文件 然后存放 无纸化系统就是把这些纸张的东西 比如身份证 业务内容 等等都使用系统进行处理 但是因为现在国家要求使用国产化系统 li
  • 华为云培训总结

    今天公司组治华为云的培训 培训大概思路如下 1 云计算入门 2 私有云搭建方案 3 华为云技术架构及特点 4 华为云产品演示 云计算入门 大概讲了3个小时跟论文的思路差不多 1 云计算的背景 2 国内外云计算平台的研究现状 3 华为对云计算
  • 数据库实验—ER模型

    E R图 实体性用举行表示 矩形内写明实体名 属性用椭圆表示 并用无向边将其与相应的实体性连接起来 练习用菱形框表示 框内写出联系名称 用无向边分别与有关实体型链接起来 同时要在无向边上注明联系的类型 1 1 1 n m n 下面用这节课的
  • JVM的常见问题及答案

    目录 1 入门部分 1 1 为什么要学习 JVM 1 2 你了解哪些 JVM 产品 1 3 JVM 的构成有哪几部分 2 类加载部分 2 1 你知道哪些类加载器 2 2 为什么需要多个类加载器 2 3 什么是双亲委派类加载模型 2 4 双亲
  • 视频直播方案测试评估

    腾讯 阿里云的视频直播服务与百度云LSS的设定与使用测试 前置条件 有已备案的可用域名 如果服务器在大陆 安装OBS软件 用于录制与推流 https obsproject com 安装可直播的软件 如kmplayer 可直接贴 rmtp u
  • 对数函数

    转自 https baike baidu com item E5 AF B9 E6 95 B0 E5 87 BD E6 95 B0 6013318 fr aladdin 一般地 对数函数以幂 真数 为自变量 指数为因变量 底数为常量的函数
  • 【Pandas】DataFrame+to_excel学习

    文章目录 1 DataFrame 2 to excel 写入单个sheet中 通过ExcelWriter写入多个工作表数据中 对excel中的工作表内容进行修改与追加 此文仅进行学习记录 1 DataFrame import pandas
  • Linux进阶_PAM认证机制详解

    成功不易 加倍努力 PAM认证机制 1 PAM 介绍 2 PAM架构 3 PAM相关文件 4 PAM工作原理 5 PAM 配置文件格式说明 6 PAM模块帮助 7 常用PAM模块 7 1 pam shells 模块 7 2 pam secu
  • AWD平台搭建

    这里采用github开源的AWD平台 https github com vidar team Cardinal 搭建平台 查看教程和官方文档 https cloud tencent com developer article 1744139
  • unity 之Animation

    Animation Clips Animation Clip 在untiy中有两种方式创建 一种是从外边导入 另一种是在unity内部创建 Animation from External Sources 外部导入的animation可以有
  • 海外自媒体多账号运营注意事项看这里!

    做跨境电商的小伙伴都知道 要想获得电商平台之外的流量 就必须做海外自媒体账号运营 且是多个账号运营 这样才能积累更多的流量 但海外自媒体账号运营不是一件容易的事情 注意事项比较多 很多小白刚入行不清楚 这里我就大家汇总了一些海外自媒体多账号
  • linux 设置端口密码,SSH更改默认端口号及实现免密码远程登陆

    近来在复习防火墙管理工具 iptables 的基本使用方法 涉及到对端口添加或删除防火墙策略的内容 之前对ssh更改默认端口号及免密码登录的方法不熟悉 这次做一个基本的总结防止自己遗忘 错误偏差及其他经验之处 还望各位多多支出 系统环境 两
  • 自定义横向ProgressBar样式圆角改直角

    横向progressBar的progress部分是圆角的 如果background是直角 那看起来不怎么和谐 所以这篇博文介绍progress部分改直角 在drawable目录下新建一个 progress style xml
  • R语言 第3章 R语言常用的数据管理(2)

    关注公众号凡花花的小窝 收获更多的考研计算机专业编程相关的资料 字符串处理 正则表达其实就是对文本进行模式匹配 所有语言中的正则表达式都有一些共同的特征 我们使用help regex 命令查看R正则表达的帮助内容 在我看来 正则表达式的主要
  • umi框架实战项目

    29 9React课程 第10节 umi框架实战项目 第10节 umi框架实战项目 第10节 umi框架实战项目 Generator是异步解决方案 next执行下一个步骤 可以放在后面也可以放在前面 Yield表示暂停 import Rea
  • [已解决]java.lang.NoClassDefFoundError: com/google/common/base/Function

    为了解决inject的报错 pom已经被我改乱了 结果最后即便改过来 项目编译报了以上错误 据说是缺少一个jar包 我用的是selenium 2 46 0 所以需要下载对应版本 selenium server standalone 2 46
  • Sentinel高并发解决方案

    Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景 本文介绍阿里开源限流熔断方案 Sentinel 功能 原理 架构 快速入门以及相关框架比较 基本介绍 1 名词解释 服务限流 当系统资源不够 不足以应对大量请求 对系统
  • 常见异常解析

    ConcurrentHashMap与CopyOnWriteArrayList比较 博客分类 Java ConcurrentHashMap ConcurrentHashMap引入了Segment 每个Segment又是一个hashtable
  • LeetCode 之 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(Java)

    文章目录 LeetCode 之 剑指 Offer 21 调整数组顺序使奇数位于偶数前面 Java 一 题目 二 解题思路 三 代码 LeetCode 之 剑指 Offer 21 调整数组顺序使奇数位于偶数前面 Java 一 题目 剑指 Of