本文主要是介绍Leetcode 2009. Minimum Number of Operations to Make Array Continuous [Python],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
把重复的部分去掉,sort,挨个数字遍历,计算出来以这个数字为开始,所需要的结尾数字,也就是n + N - 1,并查看原来的array中有没有这个数字,有,则只用改总数N - 这个数所在位置到被遍历到的位置的数 + 1.而如果没有,则修改N - 这个数所在位置到被遍历到的位置的数,因为结尾数字也需要修改。
注意查找end数字是否存在,保留数字的set而不是在sorted的list中寻找,速度更快。
class Solution:def minOperations(self, nums: List[int]) -> int:N = len(nums)num_new = set(nums)newlist = sorted(list(num_new))res = float('inf')for i,n in enumerate(newlist):validend = n + N - 1pos = bisect.bisect_left(newlist, validend)if validend in num_new:res = min(res, N - (pos - i+1))else:res = min(res, N - (pos - i))return res
这篇关于Leetcode 2009. Minimum Number of Operations to Make Array Continuous [Python]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!