给定整数数组nums
和int k
,对数组进行分区(即移动nums
中的元素),以便:所有元素<;k都向左移动。将所有元素>;=k移到右侧
返回分区索引,即第一个索引inums[i] >= k
。你知道吗
class Solution:
def partitionArray(self, nums, k):
# write your code here
if nums == []:
return 0
left = 0
i = 0
while i <= len(nums):
if nums[i] < k:
i += 1
left += 1
else:
r = nums[i]
del nums[i]
nums.append(r)
i += 1
return left
我的想法是把清单一个一个地看一遍。大于k
的num[i]
将被删除并附加在num
的末尾,小于k
的将保留在原来的位置。一旦整个名单都通过了,所有较小的num都在前面。左边是一个计数器在这一点上返回。但是我不能用nums[i]
解决这个问题。在列表的每个mod之后,计数器i
不能指向列表中的正确项。你知道吗
我怎样才能根据这个想法写代码???你知道吗
你在找
index(k)
。这看起来像是一个家庭作业,所以你可能会被限制在什么内置功能,你可以使用。然而,一个pythonic的方法是我建议你避免做一些事情。你知道吗
因为您实际上只是在寻找
index(k)
,所以只需要跟踪小于k的数字,而不必担心重新组织列表。你知道吗相关问题 更多 >
编程相关推荐