Given an array nums
of integers and an int k
, partition the array (i.e move the elements in nums
) such that: All elements < k are moved to the left. All elements >= k are moved to the right
Return the partitioning index, i.e the first index i nums[i] >= k
.
class Solution:def partitionArray(self, nums, k):# write your code hereif nums == []:return 0left = 0i = 0while i <= len(nums):if nums[i] < k:i += 1left += 1else:r = nums[i]del nums[i]nums.append(r)i += 1return left
My idea is to going through the list one by one. The num[i]
whose larger than k
will be removed and append at the end of the num
, the one whose smaller than k
will be kept at the original place. Once the whole list has been going through, all the smaller num are at the front. left is a counter at this point for return. But I cannot fix the problem with nums[i]
. After the each mods to the list, the counter i
cannot point at the correct item in the list.
How can I write the code base on this idea???