立志用最少的代码做最高效的表达


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

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

提示:
0 <= nums.length <= 50000
1 <= nums[i] <= 10000


第一次解:双指针+辅助数组

时间O(n),空间O(n)

class Solution1 {public int[] exchange(int[] nums) {int[] fin_nums = new int[nums.length];int index1 = 0, index2 = nums.length-1; //双指针for(int i = 0; i < nums.length; i++) {if(nums[i] % 2 == 1) fin_nums[index1++] = nums[i];else fin_nums[index2--] = nums[i];}return fin_nums;}
}

第二次解:双指针

快排思想,时间O(n),空间O(1)

    static class Solution2 {public int[] exchange(int[] nums) {int i1 = 0, i2 = nums.length-1; //双指针while(i1 < i2) {if(nums[i1] % 2 == 0) {while(i1 != i2 && nums[i2]%2==0) {  // 直到index2指向奇数或者等于index1i2--;}int tmp = nums[i1];nums[i1] = nums[i2];nums[i2] = tmp;} else {i1++;}}return nums;}}

完整可运行代码

public class 剑指Offer21_调整数组顺序使奇数位于偶数前面 {// 解法一:双指针+辅助数组   时间O(n),空间O(n)static class Solution1 {public int[] exchange(int[] nums) {int[] fin_nums = new int[nums.length];int index1 = 0, index2 = nums.length-1; //双指针for(int i = 0; i < nums.length; i++) {if(nums[i] % 2 == 1) fin_nums[index1++] = nums[i];else fin_nums[index2--] = nums[i];}return fin_nums;}}// 解法二:双指针(快排思想)   时间O(n),空间O(1)static class Solution2 {public int[] exchange(int[] nums) {int i1 = 0, i2 = nums.length-1; //双指针while(i1 < i2) {if(nums[i1] % 2 == 0) {while(i1 != i2 && nums[i2]%2==0) { i2--; } // 直到index2指向奇数或者等于index1int tmp = nums[i1];nums[i1] = nums[i2];nums[i2] = tmp;} else { i1++; }}return nums;}}public static void main(String[] args) {int[] nums = new int[]{1,2,3,4,5,6};Solution2 solution2 = new Solution2();int[] fin_nums = solution2.exchange(nums);for(int i = 0; i < fin_nums.length; i++) {System.out.println(fin_nums[i]);}}
}

木秀于林,风必摧之;堆出于岸,流必湍之;行高于人,众必非之。

【双100%解法】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面相关推荐

  1. 《LeetCode力扣练习》剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Java

    <LeetCode力扣练习>剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Java 一.资源 题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组 ...

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

    [LeetCode]剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 文章目录 [LeetCode]剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 一.双指针 一.双指针 解题思路: ...

  3. Leetcode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (每日一题 20210917)

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分.示例:输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1 ...

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

    题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 知识点: 保证相对位置 ...

  5. 【算法】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

    文章目录 1.概述 2,双指针 1.概述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分. 示例: 输入:nums = [1,2,3,4 ...

  6. 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (快速排序partion操作应用)

    借助一个额外的空间,空间复杂度O(N), 时间复杂度O(1) 快速排序partion操作,空间O(1),  不稳定 冒泡排序,O(n^2), 空间O(1) class Solution { publi ...

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

    剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 思路一:使用快慢双指针 1: i找偶数找到了,继续往下执行,找不到i++ 2:j找奇数,找到了继续往下执行,找不到j– 3:最后交换 clas ...

  8. 剑指Offer #13 调整数组顺序使奇数位于偶数前面 | 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:调整数组顺序使奇数位于偶数前面 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的 ...

  9. 《剑指offer》-- 调整数组顺序使奇数位于偶数前面、顺时针打印矩阵、数字在排序数组中出现的次数

    一.调整数组顺序使奇数位于偶数前面: 1.题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之 ...

最新文章

  1. 【Python】过滤数组中的空值(空字符串''和None)
  2. 实例49:python
  3. Myeclipse2015把web项目添加至tomcat中,添加列表中却没有想要添加的项目
  4. 数字三角形的显示 java
  5. C#写Windows系统日志(EventLog)
  6. 2020年,RocketMQ面试题 -面试题驱动RocketMQ学习
  7. BroadcastReceiver广播接受者简单使用
  8. Matplotlib简介和pyplot的简单使用——subplot
  9. windows下安装,配置gcc编译器
  10. 迅为RK3399开发板嵌入式linux开发指南
  11. UML实例(五):在线购物系统设计类图
  12. 联通沃商店宣布独立运作 成立小沃科技公司
  13. 基于JAVA准妈妈孕期交流平台计算机毕业设计源码+系统+lw文档+部署
  14. MAC 安装PS 破解
  15. input输入框事件流程变化
  16. 考研学校的爬虫(自己写的可能会有点菜
  17. springboot 自定义注解拦截器
  18. 李开复给大学生的第1封信:从诚信谈起
  19. 【CIKM 2020】基于多视图协作学习的人岗匹配研究
  20. 转载: 外企九年-我最终选择放弃

热门文章

  1. 标准STUN判断NAT类型的过程及改进
  2. 经典|图解Linux内存性能优化核心思想
  3. SQL 查询总是先执行SELECT语句吗?
  4. 聊一聊Kafka分区的隐藏属性——二次归类
  5. 工具类用得好,下班下的早
  6. LiveVideoStackCon 2021 音视频技术大会北京站 延期通告
  7. 音视频技术开发周刊 | 185
  8. Smooth Delivery:如何减少网络拥塞?
  9. 展望2018:人工智能为媒体服务赋能
  10. Kubernetes 1.9 发布