文章目录
- 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]