【问题描述】[简单]
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
【解答思路】
1. 双指针
时间复杂度:O(N) 空间复杂度:O(1)
class Solution {public int[] exchange(int[] nums) {int i = 0, j = nums.length - 1, tmp;while(i < j) {while(i < j && (nums[i] & 1) == 1) i++;while(i < j && (nums[j] & 1) == 0) j--;tmp = nums[i];nums[i] = nums[j];nums[j] = tmp;}return nums;}
}
【总结】
1.交换两个数
nums[left] ^= nums[right];
nums[right] ^= nums[left];
nums[left] ^= nums[right];
tmp = nums[i];nums[i] = nums[j];nums[j] = tmp;
2.数组题目 需要交互 双指针思路时刻牢记
3.数组题目 边界边界判断!
转载链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/solution/mian-shi-ti-21-diao-zheng-shu-zu-shun-xu-shi-qi-4/