提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
)
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
注意:题目来源于leetcode
解题过程
解题思路
采用双指针的方法。两种方式:头尾指针和快慢指针。其中头尾指针思路为:头指针从0开始指向奇数,尾指针从nums.length - 1开始指向偶数。循环结束条件为头指针等于尾指针,在循环中头指针加一,尾指针减一。直到头指针遇到偶数,尾指针遇到奇数,将头尾指针所指向的内容互换。
class Solution {
public int[] exchange(int[] nums) {
int left = 0;
int right = nums.length - 1;
while(left < right){
if(nums[left] % 2 != 0){
left++;
continue;
}
if(nums[right] % 2 == 0){
right--;
continue;
}
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
// int low = 0;
// int fast = 0;
// int flag = 0;
// while(fast < nums.length){
// if(nums[low] % 2 != 0){//奇数
// low ++;
// if(flag == 0)
// fast ++;
// continue;
// }
// flag = 1;
// fast++;
// if(fast < nums.length && nums[fast] % 2 != 0){
// int temp = nums[fast];
// nums[fast] = nums[low];
// nums[low] = temp;
// }
// }
return nums;
}
}
总结
暂时没有总结,待续。。。