失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > leetcode 调整数组顺序使奇数位于偶数前面

leetcode 调整数组顺序使奇数位于偶数前面

时间:2021-04-08 16:36:20

相关推荐

leetcode 调整数组顺序使奇数位于偶数前面

解法一:双指针

public int[] Exchange(int[] nums) {int head = 0;int tail = nums.Length - 1;while(head < tail){if((nums[head] & 1) == 1){head++;continue;}else if((nums[tail] & 1) == 0){tail--;continue;}else{int temp = nums[head];nums[head] = nums[tail];nums[tail] = temp;head++;tail--;} }return nums;}

解法二:快慢指针

//快慢指针public int[] Exchange(int[] nums) {int low = 0;int fast = 0;while(fast < nums.Length){if((nums[low] & 1) == 0){if((nums[fast] & 1) == 1){int temp = nums[low];nums[low] = nums[fast];nums[fast] = temp;low++;}fast++;}else{low++;fast++;} }return nums;}

优化点1:用与操作代替求余操作

如:if((nums[head]&1)==1)

优化点2:用异或实现交换操作,速度更快的同时节约一个临时变量

nums[slow] ^= nums[fast];

nums[fast] ^= nums[slow];

nums[slow] ^= nums[fast];

如果觉得《leetcode 调整数组顺序使奇数位于偶数前面》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。