文章目录
- 13. 合并区间
- 14. 轮转数组
13. 合并区间
合并区间
数组 排序
思路:
代码:
class Solution:def merge(self, intervals):result = []if len(intervals) == 0:return result # 区间集合为空直接返回intervals.sort() # 默认按照区间的左边界进行排序result.append(intervals[0]) # 第一个区间可以直接放入结果集中for i in range(1, len(intervals)):if result[-1][1] >= intervals[i][0]: # 发现重叠区间# 合并区间,只需要更新结果集最后一个区间的右边界,因为根据排序,左边界已经是最小的result[-1][1] = max(result[-1][1], intervals[i][1])else:result.append(intervals[i]) # 区间不重叠return result
14. 轮转数组
轮转数组
数组
题目:
思路:
题目的前提是需要在原数组上进行修改,没有返回值
先对数组进行切片,对切片后的数组进行遍历,对原数组进行值的修改
代码:
class Solution:def rotate(self, nums: List[int], k: int) -> None:n = len(nums)k = k % n # 有可能k值会大于数组长度,因此需要对k除n取余result1 = nums[n - k:]result2 = nums[:n-k]for i in range(len(result1)):nums[i] = result1[i] for j in range(len(result2)):nums[k + j] = result2[j]