合并區間:
????????這里還是先對左區間進行排序,判斷重疊區間,首先判斷是否存在元素,存在那么就將元素的第一個放到結果中,那么判斷重疊就是當前元素的左區間和結果集里的最后元素的右區間進行判斷,如果重疊,更新右區間為兩個右區間的最大值,詳細代碼如下所示:
class Solution(object):def merge(self, intervals):""":type intervals: List[List[int]]:rtype: List[List[int]]"""intervals.sort(key=lambda x: x[0])if not intervals:return []result = [intervals[0]]for i in range(len(intervals)):if intervals[i][0]<=result[-1][1]:result[-1][1] = max(intervals[i][1],result[-1][1])else:result.append(intervals[i])return result
單調遞增的數字:
? ? ? ? 這里從本質上講就是從后往前的數字進行遍歷替換,一旦右一個數字為9,那么這個數字及之后的數字都應該為9,這個是需要注意的地方,詳細代碼如下所示:
class Solution(object):def monotoneIncreasingDigits(self, n):""":type n: int:rtype: int"""strnum=list(str(n))for i in range(len(strnum)-1,0,-1):if strnum[i-1]>strnum[i]:strnum[i-1]=str(int(strnum[i-1])-1)strnum[i:]="9"*len(strnum[i:])return int(''.join(strnum))