前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >力扣 - 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

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

作者头像
冬夜先生
修改2021-10-20 10:25:19
3050
修改2021-10-20 10:25:19
举报
文章被收录于专栏:csicocsico

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

题目#

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

思路1#

  • 使用头尾双指针leftright,分别指向最左边和最右边
  • left向右移动,直到遇到了偶数停下
  • right向左移动,直到遇到了奇数停下
  • 交换left和right的值
  • 如果left大于等于right,说明调整完成

代码#

代码语言:javascript
复制
class Solution {
    public int[] exchange(int[] nums) {
        int length = nums.length;
        int left = 0;
        int right = length-1;

        while (left < right) {
            // 找偶书
            while (left < right && nums[left] % 2 == 1) {
                left++;
            }
            // 找奇数
            while (right > left && nums[right] % 2 == 0) {
                right--;
            }
            // 只有在left小于right情况下才交换
            if (left < right) {
                int temp = nums[left];
                nums[left] = nums[right];
                nums[right] = temp;
                // 交换完成后顺便指针移动一下
                left++;
                right--;
            }
        }

        return nums;
    }
}

复杂度分析#

  • 时间复杂度:O(N)O(N)
  • 空间复杂度:O(1)O(1)

思路2#

  • 使用快慢指针
  • 初始时候,两个指针都是指向最左端
  • 快指针每次前进一格,如果遇到了奇数,就喝慢指针进行交换,然后两个指针都前进一步
  • 如果两个指针在同一个位置则不进行交换

代码#

代码语言:javascript
复制
class Solution {
    public int[] exchange(int[] nums) {
        int length = nums.length;
        int slow = 0;
        int fast = 0;

        while (slow < length && fast < length) {
            if (nums[fast] % 2 == 1) {
                if (fast != slow) {
                    int temp = nums[fast];
                    nums[fast] = nums[slow];
                    nums[slow] = temp;
                }
                slow++;
            }
            fast++;
        }
        return nums;
    }
}

复杂度分析#

  • 时间复杂度:O(N)O(N)
  • 空间复杂度:O(1)O(1)

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 力扣 - 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
    • 题目#
      • 思路1#
        • 代码#
        • 复杂度分析#
      • 思路2#
        • 代码#
        • 复杂度分析#
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档