zoukankan      html  css  js  c++  java
  • 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

    1. 题目

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

    2. 示例

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

    3. 题解

    双指针法:

    • 判断是否符合左边奇数右边偶数
    • 完全相反,交换
    • 左右都为偶数,右指针左移
    • 左右都为奇数,左指针左移
    • 左奇数右偶数,左指针右移,右指针左移

    4. 实现

     1 public class Exchange21 {
     2     // 双指针
     3     public int[] exchange(int[] nums) {
     4         int left = 0, right = nums.length - 1;
     5         while (left < right) {
     6             // 左边为偶数,右边为基数交换
     7             if(nums[left] % 2 == 0 && nums[right] % 2 == 1) {
     8                 int temp = nums[left];
     9                 nums[left] = nums[right];
    10                 nums[right] =temp;
    11             }
    12             // 左边为偶数,右边为偶数
    13             else if(nums[left] % 2 == 0) {
    14                 right--;
    15             }
    16             // 左边为奇数,右边为偶数
    17             else if(nums[right] % 2 == 1) {
    18                 left++;
    19             }
    20             // 左边为奇数,右边为偶数
    21             else {
    22                 left++;
    23                 right--;
    24             }
    25         }
    26         return nums;
    27     }
    28 
    29     public static void main(String[] args) {
    30         int[] nums = {1, 2, 3, 4};
    31         int[] num = new Exchange21().exchange(nums);
    32         for(int i = 0; i < num.length; i++) {
    33             System.out.println(num[i]);
    34         }
    35     }
    36 }

    5. 结语

      努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!

      如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。

    但行好事 莫问前程
  • 相关阅读:
    学习进度条
    软件工程期末总结
    实验四 主存空间的分配与回收
    学术诚信与道德
    《构建之法》第八、九、十章读后感
    实验三、进程调度模拟程序实验
    《构建之法》第六七章读后感
    Scrum团队成立3.0
    0428-项目再开发2.0
    作业调度模拟程序
  • 原文地址:https://www.cnblogs.com/haifwu/p/14978647.html
Copyright © 2011-2022 走看看