给出一个整数数组SELECT ROUND(SQRT(POWER(MIN(LAT_N)-MAX(LAT_N),2) +
POWER(MIN(LONG_W)-MAX(LONG_W),2)),4)
FROM STATION;
和一个nums
,对该数组进行分区(即,将int k
中的元素移动),使得:所有nums
。
nums[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
的{{1}}将被删除并追加到num[i]
的末尾,小于k
的{{1}}将保留在原始位置。一旦整个列表通过,所有较小的数字都位于最前面。左边是此时的返回计数器。但是我无法解决num
的问题。在列表中的每个mod之后,计数器k
无法指向列表中的正确项目。
我如何基于这个想法编写代码?
答案 0 :(得分:3)
您正在寻找index(k)
。这似乎是一项家庭作业,因此您可能仅限于可以使用的内置功能。但是,pythonp的方法是
def solution(nums, k):
return sorted(nums).index(k)
您正在做一些我建议避免的事情。
由于您实际上只是在寻找index(k)
,因此只需跟踪小于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:
left += 1
i += 1
return left