本文主要是介绍算法通关村第三关-白银挑战双指针思想,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大家好我是苏麟 , 今天带来算法第三关 .
本期大纲
- 元素奇偶移动专题
元素奇偶移动专题
描述 :
给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。
返回满足此条件的 任一数组 作为答案。
题目 :
LeetCode 905. 按奇偶排序数组 :
按奇偶排序数组
分析 :
我们可以采用对撞型双指针的方法,图示中的对撞型基本一致,只不过比较的对象是奇数还是偶数。如下图所示:
维护两个指针 left=0和 right=arr.ength-1,left从0开始逐个检查每个位置是否为偶数,如果是则跳过如果是奇数则停下来。然后right从右向左检查,如果是奇数则跳过偶数则停下来。然后交换array[left]和array[right]。之后再继续巡循环,直到left> =right。
解析 :
class Solution {public int[] sortArrayByParity(int[] nums) {int left = 0;int right = nums.length - 1;while(left < right){if((nums[left] % 2) > (nums[right] % 2)){int temp = nums[left];nums[left] = nums[right];nums[right] = temp;}if(nums[left] % 2 == 0){left++;}if(nums[right] % 2 > 0){right--;}}return nums;}
}
这期就到这里 , 下期见 !
这篇关于算法通关村第三关-白银挑战双指针思想的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!