前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >写了一道双指针,我飘了~

写了一道双指针,我飘了~

作者头像
五分钟学算法
发布2021-05-31 15:12:47
2770
发布2021-05-31 15:12:47
举报
文章被收录于专栏:五分钟学算法五分钟学算法

一、题目描述

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

示例:

代码语言:javascript
复制
输入:nums = [1,2,3,4]
输出:[1,3,2,4] 
注:[3,1,2,4] 也是正确的答案之一。

提示:

代码语言:javascript
复制
1 <= nums.length <= 50000
1 <= nums[i] <= 10000

二、题目解析

  • 定义头指针 left ,尾指针 right
  • left 一直往右移,直到它指向的值为偶数
  • right 一直往左移, 直到它指向的值为奇数
  • 交换 nums[left]nums[right]
  • 重复上述操作,直到 left == right 为止

三、动画描述

四、图片描述

面试题KeyNote.002

面试题KeyNote.003

面试题KeyNote.004

面试题KeyNote.005

面试题KeyNote.006

面试题KeyNote.007

面试题KeyNote.008

面试题KeyNote.009

面试题KeyNote.010

面试题KeyNote.011

面试题KeyNote.012

面试题KeyNote.013

面试题KeyNote.014

面试题KeyNote.015

面试题KeyNote.016

面试题KeyNote.017

五、参考代码

代码语言:javascript
复制
class Solution {
    public int[] exchange(int[] nums) {
        // 定义头指针 left ,尾指针 right ,临时变量 tmp 
        int left = 0, right = nums.length - 1, tmp;
        
        //重复操作,直到 left == right 为止
        while(left < right) {
            // nums[left] & 1 与 nums[right] & 1 都是用来判断数字奇偶性。
            // left 一直往右移,直到它指向的值为偶数
            while(left < right && (nums[left] & 1) == 1) left++;
      // right 一直往左移, 直到它指向的值为奇数
            while(left < right && (nums[right] & 1) == 0) right--;
         
            // 交换 nums[left] 和 nums[right]*
            tmp = nums[left];
            nums[left] = nums[right];
            nums[right] = tmp;
        }
        return nums;
    }
}

六、复杂度分析

时间复杂度

时间复杂度为 O(N) ,其中 N 为数组 nums 的长度。

空间复杂度

空间复杂度为 O(1)

七、相关标签

  • 链表
  • 双指针

八、参考阅读

  • https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/solution/ti-jie-shou-wei-shuang-zhi-zhen-kuai-man-shuang-zh/
  • https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/ 评论区
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 五分钟学算法 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目描述
  • 二、题目解析
  • 三、动画描述
  • 四、图片描述
  • 五、参考代码
  • 六、复杂度分析
    • 时间复杂度
      • 空间复杂度
      • 七、相关标签
      • 八、参考阅读
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档