都说FB爱出原题
但最近去面试的小伙伴向领扣🐱反馈
新题频出,遇到非tag题快成常态
为了帮助大家更快适应这一变化,领扣🐱对FB题库进行了更新,一道近半年来的高频题,分享给大家。
LintCode 641

丢失的间隔

题目描述

给定一个排序整数数组,其中元素的取值范围为[lower,upper] (包括边界),返回其缺少的范围。
扫码免费做题
↓↓↓
样例1:
输入:nums = [0, 1, 3, 50, 75], lower = 0 and upper = 99输出:["2", "4->49", "51->74", "76->99"]解释:在区间[0,99]中,缺失的区间有:[2,2],[4,49],[51,74]和[76,99]
样例2:
输入:nums = [0, 1, 2, 3, 7], lower = 0 and upper = 7输出:["4->6"]解释:在区间[0,7]中,缺失的区间有:[4,6]
解题思路
因为题中给出数组已经排好序,因此只需要按顺序遍历一遍数组即可求出答案。
源代码
classSolution:""" @param: nums: a sorted integer array @param: lower: An integer @param: upper: An integer @return: a list of its missing ranges """defhelper(self, left_point, right_point):if left_point == right_point:return str(left_point)else:return str(left_point) + "->" + str(right_point)deffindMissingRanges(self, nums, lower, upper):# write your code here ans = []if len(nums) == 0: ans.append(self.helper(lower, upper))return ans pre_point = lower - 1for point in nums:if pre_point != point and pre_point + 1 != point: ans.append(self.helper(pre_point + 1, point - 1)) pre_point = pointif nums[-1] < upper: ans.append(self.helper(nums[-1] + 1, upper))return ans
点击【阅读原文】,查看领扣原题
继续阅读
阅读原文