题目描述:分割一个整数数组,使得奇数在前偶数在后。
样例:给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]。
想想在快速排序中,每一次递归是如何调整元素位置的。通过依次遍历,交换的方法,如果记不得了,可以点回去看看(详见:点击打开链接)
所以,这个题类似,直接写出代码就行了:
class Solution:
# @param nums: a list of integers
# @return: nothing
def partitionArray(self, nums):
left, right = 0, len(nums) - 1
while left < right:
if self.iseven(nums[left]):
nums[left], nums[right] = nums[right], nums[left]
right -= 1
else:
left += 1
return nums
def iseven(self, n):
return n % 2 == 0
# write your code here
可见,这种交换元素的手法(也是快排中的基本操作),是经常用到的,一定要非常熟练。
同时,我们发现同样的操作在链表中的话(比如,链表划分从逻辑上将考察的是一样的东西:点击打开链接),操作上会更复杂一点,数组还是比较简单的东西。