2200. 找出数组中的所有 K 近邻下标 - 力扣(LeetCode)



可以按照以下步骤来解决这个问题:
题目解析:
-
给定数组
nums和两个整数key与k。 -
定义“K 近邻下标”:满足存在某个
j,nums[j] == key且|i - j| <= k。 -
需要返回所有满足这个条件的
i值(下标),按升序排列,并且不能重复。
解法思路:
-
首先遍历数组,找出所有
nums[j] == key的位置。 -
对于每一个这样的
j,将j-k到j+k范围内的下标都加入一个集合中(注意边界限制)。 -
最后将这个集合转成列表并排序返回。
Python 实现:
def find_k_distant_indices(nums, key, k):
n = len(nums)
result = set()
for j in range(n):
if nums[j] == key:
start = max(0, j - k)
end = min(n - 1, j + k)
for i in range(start, end + 1):
result.add(i)
return sorted(result)
示例:
nums = [1, 2, 3, 4, 2, 1, 2]
key = 2
k = 2
print(find_k_distant_indices(nums, key, k))
输出:
[0, 1, 2, 3, 4, 5, 6]
1155

被折叠的 条评论
为什么被折叠?



