left
和right
,分别指向最左边和最右边class Solution {
public int[] exchange(int[] nums) {
int length = nums.length;
int left = 0;
int right = length-1;
while (left < right) {
// 找偶书
while (left < right && nums[left] % 2 == 1) {
left++;
}
// 找奇数
while (right > left && nums[right] % 2 == 0) {
right--;
}
// 只有在left小于right情况下才交换
if (left < right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
// 交换完成后顺便指针移动一下
left++;
right--;
}
}
return nums;
}
}
class Solution {
public int[] exchange(int[] nums) {
int length = nums.length;
int slow = 0;
int fast = 0;
while (slow < length && fast < length) {
if (nums[fast] % 2 == 1) {
if (fast != slow) {
int temp = nums[fast];
nums[fast] = nums[slow];
nums[slow] = temp;
}
slow++;
}
fast++;
}
return nums;
}
}
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。