給出一個(gè)整數(shù)數(shù)組 nums 和一個(gè)整數(shù) k。劃分?jǐn)?shù)組(即移動(dòng)數(shù)組 nums 中的元素)妆偏,使得:
所有小于k的元素移到左邊
所有大于等于k的元素移到右邊
返回?cái)?shù)組劃分的位置需忿,即數(shù)組中第一個(gè)位置 i们童,滿足 nums[i] 大于等于 k。
LintCode題目地址
def partitionArray(self, nums, k):
# write your code here
n = len(nums)
if n == 0:
return 0
start, end = 0,n - 1
while start <= end:
while start <= end and nums[start] < k:
start += 1
while start <= end and nums[end] >= k:
end -= 1
if start <= end:
tmp = nums[start]
nums[start] = nums[end]
nums[end] = tmp
start += 1
end -= 1
return start