分割一个整数数组,使得奇数在前偶数在后。

样例

给定 [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

此处判断奇偶数的方法还有很多,写了一个最便于理解的方法,可以思考下其他高效的判断奇偶数方法。