canvas做的手機(jī)網(wǎng)站搜索引擎優(yōu)化指南
1.?54——螺旋矩陣
給你一個(gè)?m
?行?n
?列的矩陣?matrix
?,請(qǐng)按照順時(shí)針螺旋順序?,返回矩陣中的所有元素。
標(biāo)簽:數(shù)組,矩陣,模擬
代碼:
class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:top = 0bottom = len(matrix) - 1left = 0right = len(matrix[0]) - 1res = []while True:for i in range(left, right + 1):res.append(matrix[top][i])top = top + 1if top > bottom:breakfor i in range(top, bottom + 1):res.append(matrix[i][right])right = right - 1if right < left:breakfor i in range(right, left - 1, -1):res.append(matrix[bottom][i])bottom = bottom - 1if bottom < top:breakfor i in range(bottom, top - 1, -1):res.append(matrix[i][left])left = left + 1if left > right:breakreturn res
2.?55——跳躍游戲
給你一個(gè)非負(fù)整數(shù)數(shù)組?nums
?,你最初位于數(shù)組的第一個(gè)下標(biāo)。數(shù)組中的每個(gè)元素代表你在該位置可以跳躍的最大長(zhǎng)度。判斷你是否能夠到達(dá)最后一個(gè)下標(biāo),如果可以,返回?true
?;否則,返回?false
?。
標(biāo)簽:數(shù)組,貪心,動(dòng)態(tài)規(guī)劃
代碼:
class Solution:def canJump(self, nums: List[int]) -> bool:cover = 0i = 0while i <= cover:leng = i + nums[i]cover = leng if leng > cover else coverif cover >= len(nums) - 1:return Truei = i + 1return False
3.?56——合并區(qū)間
以數(shù)組?intervals
?表示若干個(gè)區(qū)間的集合,其中單個(gè)區(qū)間為?intervals[i] = [starti, endi]
?。請(qǐng)你合并所有重疊的區(qū)間,并返回一個(gè)不重疊的區(qū)間數(shù)組,該數(shù)組需恰好覆蓋輸入中的所有區(qū)間?。
標(biāo)簽:數(shù)組,排序
代碼:
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——插入?yún)^(qū)間
給你一個(gè)無(wú)重疊的,按照區(qū)間起始端點(diǎn)排序的區(qū)間列表?intervals
,其中?intervals[i] = [starti, endi]
?表示第?i
?個(gè)區(qū)間的開始和結(jié)束,并且?intervals
?按照?starti
?升序排列。同樣給定一個(gè)區(qū)間?newInterval = [start, end]
?表示另一個(gè)區(qū)間的開始和結(jié)束。
在?intervals
?中插入?yún)^(qū)間?newInterval
,使得?intervals
?依然按照?starti
?升序排列,且區(qū)間之間不重疊(如果有必要的話,可以合并區(qū)間)。
返回插入之后的?intervals
。
注意你不需要原地修改?intervals
。你可以創(chuàng)建一個(gè)新數(shù)組然后返回它。
標(biāo)簽:數(shù)組(目前不會(huì))
代碼:
5.?58——最后一個(gè)單詞的長(zhǎng)度
給你一個(gè)字符串?s
,由若干單詞組成,單詞前后用一些空格字符隔開。返回字符串中最后一個(gè)單詞的長(zhǎng)度。單詞是指僅由字母組成、不包含任何空格字符的最大子字符串。
標(biāo)簽:字符串
代碼:
class Solution:def lengthOfLastWord(self, s: str) -> int:while s[0] == ' ':s = s[1:]while s[-1] == ' ':s = s[0:-1]left = len(s) - 1right = len(s) - 1while left >= 0 and s[left] != ' ':left = left - 1return right - left + 1 if left == 0 else right - left