题目描述:
调整数组顺序使奇数位于偶数前面 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例 : 输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。
来源:力扣(LeetCode)
算法实现:
解题思路 双指针 前后分别用一个指针进行扫描,左边碰到偶数停下来,右边碰到奇数停下来,然后左右交换数据,直到左右指针相遇。
def exchange(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
left,right=0,len(nums)-1
while left<right:
while left<right and nums[left]&1!=0:left+=1
while left<right and nums[right]&1!=1:right-=1
nums[left],nums[right]=nums[right],nums[left]
return nums
新想法: 关于判断奇偶数问题 。 一般用num%2==1 判断奇数,用num%2==0判断偶数,现在可用更快的方法, 相与&num&1==1可判断奇数,num&1==0可判断偶数。
|