大家好,我是吴师兄,不啰嗦,直接开始今天的看动画,学算法。
一、题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
提示:
0 <= nums.length <= 50000
0 <= nums[i] <= 10000
// 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、简历修改、学习资源、大厂嘉宾分享等
吴师兄算法训练营专注于算法面试,希望通过动画的形式帮助大家克服学算法的枯燥感,现在已经举办了两期,有不少同学在这当中找到了学习算法的乐趣,如果你原由网信得过吴师兄,那么欢迎你的加入,我们一起攻克算法,进入大厂。
备注【训练营】领取优惠券