奇数变偶数前一句

大家好,我是吴师兄,不啰嗦,直接开始今天的看动画,学算法。

一、题目描述

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

示例:

输入:nums = [1,2,3,4]

输出:[1,3,2,4]

注:[3,1,2,4] 也是正确的答案之一。

提示:

  1. 0 <= nums.length <= 50000

  2. 0 <= nums[i] <= 10000

二、保姆级参考代码 // 登录 AlgoMooc 官网获取更多算法图解

// https://www.algomooc.com

// 作者:程序员吴师兄

classSolution{

publicint[] exchange( int[] nums) {

// 定义头指针 left

intleft = 0;

// 定义尾指针 right

intright = nums.length - 1;

// 定义临时变量 tmp

inttmp;

// 移动 left 和 right ,直到 left 在 right 右侧或者相遇为止

while(left < right) {

// 如果 left 指针指向的元素值是奇数,那么说明该元素在左侧了,观察其它的元素,即让 left 向右移动

while(left < right && (nums[left] & 1) == 1) left++;

// 如果 right 指针指向的元素值是偶数,那么说明该元素在右侧了,观察其它的元素,即让 right 向左移动

while(left < right && (nums[right] & 1) == 0) right--;

// 否则就说明,此时要么 left 指向的元素值为偶数,要么 right 指向的元素值为奇数

// 交换这两个位置的元素

tmp = nums[left];

nums[left] = nums[right];

nums[right] = tmp;

}//www.58yuanyou.com

// 最后返回结果就行

returnnums;

}

}

三、视频讲解

最后也欢迎大家添加我的微信,如果你在刷《剑指 Offer》或者看pALcYS我发布过的 LeetCode 题解时遇到任何问题都原由网可以咨询我,48 小时之内我都会给出答复。

www.58yuanyou.com外,吴师兄的看动画学算法训练营第三期正在招生当中,预计 11 月初开营,11 月 1 号前预定有优惠,第三期会涨价,想通过学好算法进大厂的同学可以添加我的微信了解。

备注【训练营】领取优惠券

吴师兄的算法训练营会提供如下服务:

  • 1、100 道高频算法面试题动画,远比图解更好理解

  • 2、100 道保姆级别的代码注释,把代码揉碎了给大家看,小白也能看懂

  • 3、一次付费,三年内免费更新,即参加任意一期的算法训练营,后续更新或者添加的服务都可以免费获得,无需额外付费

  • 4、1 周 1 次的作业直播答疑,全方位解决算法问题

  • 5、吴师兄的 1 对 1 答疑服务一年

  • 6、简历修改、学习资源、大厂嘉宾分享等

吴师兄算法训练营专注于算法面试,希望通过动画的形式帮助大家克服学算法的枯燥感,现在已经举办了两期,有不少同学在这当中找到了学习算法的乐趣,如果你原由网信得过吴师兄,那么欢迎你的加入,我们一起攻克算法,进入大厂。

备注【训练营】领取优惠券

内容版权声明:除非注明原创否则皆为转载,再次转载请注明出处。

文章标题: 奇数变偶数前一句

文章地址: www.58yuanyou.com/wenzhang/179505.html

相关推荐