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) 的相关文章

随机推荐

  • 当我和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