力扣(2024.06.21)
1. 54——螺旋矩阵
给你一个 m
行 n
列的矩阵 matrix
,请按照顺时针螺旋顺序 ,返回矩阵中的所有元素。
标签:数组,矩阵,模拟
代码:
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
top = 0
bottom = len(matrix) - 1
left = 0
right = len(matrix[0]) - 1
res = []
while True:
for i in range(left, right + 1):
res.append(matrix[top][i])
top = top + 1
if top > bottom:
break
for i in range(top, bottom + 1):
res.append(matrix[i][right])
right = right - 1
if right < left:
break
for i in range(right, left - 1, -1):
res.append(matrix[bottom][i])
bottom = bottom - 1
if bottom < top:
break
for i in range(bottom, top - 1, -1):
res.append(matrix[i][left])
left = left + 1
if left > right:
break
return res
2. 55——跳跃游戏
给你一个非负整数数组 nums
,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true
;否则,返回 false
。
标签:数组,贪心,动态规划
代码:
class Solution:
def canJump(self, nums: List[int]) -> bool:
cover = 0
i = 0
while i <= cover:
leng = i + nums[i]
cover = leng if leng > cover else cover
if cover >= len(nums) - 1:
return True
i = i + 1
return False
3. 56——合并区间
以数组 intervals
表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]
。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
标签:数组,排序
代码:
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort()
res = []
res.append(intervals[0])
for i in intervals:
interval = res[-1]
if i[0] <= interval[1]:
start = interval[0]
end = max(interval[1], i[1])
res.pop()
res.append([start, end])
else:
res.append(i)
return res
4. 57——插入区间
给你一个无重叠的,按照区间起始端点排序的区间列表 intervals
,其中 intervals[i] = [starti, endi]
表示第 i
个区间的开始和结束,并且 intervals
按照 starti
升序排列。同样给定一个区间 newInterval = [start, end]
表示另一个区间的开始和结束。
在 intervals
中插入区间 newInterval
,使得 intervals
依然按照 starti
升序排列,且区间之间不重叠(如果有必要的话,可以合并区间)。
返回插入之后的 intervals
。
注意你不需要原地修改 intervals
。你可以创建一个新数组然后返回它。
标签:数组(目前不会)
代码:
给你一个字符串 s
,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。
标签:字符串
代码:
class Solution:
def lengthOfLastWord(self, s: str) -> int:
while s[0] == ' ':
s = s[1:]
while s[-1] == ' ':
s = s[0:-1]
left = len(s) - 1
right = len(s) - 1
while left >= 0 and s[left] != ' ':
left = left - 1
return right - left + 1 if left == 0 else right - left
原文地址:https://blog.csdn.net/m0_52507142/article/details/139871429
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!