分割一个整数数组,使得奇数在前偶数在后。
样例
给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]。
思路:此题可以用双指针来进行处理。
设置左右两个指针,左指针指向数组元素下标为“0”的元素,右指针指向数组尾部的元素。
然后移动指针,当左指针遇到第一个为偶数的元素时,与右指针第一个为奇数的元素进行交换。
依次进行循环处理,直到指针碰撞。
需要注意的是,并不是两个指针同时移动,而是先移动其中一个指针,当遇到符合元素时,再移动指针,当另一个指针遇到符合条件的元素时,进行交换位置。
代码:
1 class Solution: 2 # @param nums: a list of integers 3 # @return: nothing 4 def partitionArray(self, nums): 5 # write your code here 6 j=0 #模拟左指针 7 k=len(nums)-1 #模拟右指针 8 while j<=k: 9 if nums[j]%2==0: 10 if nums[k]%2!=0: 11 nums[j],nums[k]=nums[k],nums[j] 12 j+=1 13 k-=1 14 else : 15 j+=1 16 return nums
此处判断奇偶数的方法还有很多,写了一个最便于理解的方法,可以思考下其他高效的判断奇偶数方法。