题目描述:
请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。
例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。
思路:
要求从前往后找第一次出现比当前值大的
求解时,从后往前遍历,设置一个栈,如果栈为空,直接放入,最终结果中存放0,如果栈不空,当前值比栈顶小,求当前值和栈顶的索引之差,然后将索引放入栈顶,如果当前值比栈顶大,循环输出栈顶元素(因为要找出现第一次比当前值大的地方),这时还要判断栈是否空,如果栈空,将当前值直接放入,否则求当前值和栈顶的索引之差,再把当前值放入栈中
1 class Solution:
2 def dailyTemperatures(self, T: List[int]) -> List[int]:
3 stack = []
4 res = []
5 for i in range(len(T)-1,-1,-1):
6 if not stack:
7 stack.append(i)
8 res.append(0)
9 else:
10
11 while stack and T[i]>=T[stack[-1]] : # 先判断栈是否空,再取栈中的值,否则下标越界
12 stack.pop()
13 if not stack:
14 res.append(0)
15 else:
16 res.append(stack[-1]-i)
17 stack.append(i)
18 res.reverse() # 返回none
19 #return [res[i] for i in range(len(res)-1,-1,-1)]
20 return res
最长回文子串
1 class Solution: 2 def longestPalindrome(self, s: str) -> str: 3 n = len(s) 4 dp = [[False]*n for _ in range(n) ] 5 ans = '' 6 for terminal in range(n):# 间隔 7 for begin in range(n): 8 end = begin+terminal 9 if end>=n: 10 break 11 if terminal==0: 12 dp[begin][end] = True 13 elif terminal==1: 14 dp[begin][end] = (s[begin]==s[end]) 15 else: 16 dp[begin][end] = (dp[begin+1][end-1] and s[begin]==s[end]) 17 if dp[begin][end] and terminal+1>len(ans): 18 ans = s[begin:end+1] 19 return ans
1 class Solution: 2 def expandAroundCenter(self, s, left, right): 3 while left >= 0 and right < len(s) and s[left] == s[right]: 4 left -= 1 5 right += 1 6 return left + 1, right - 1 7 8 def longestPalindrome(self, s: str) -> str: 9 start, end = 0, 0 10 for i in range(len(s)): 11 left1, right1 = self.expandAroundCenter(s, i, i) 12 left2, right2 = self.expandAroundCenter(s, i, i + 1) 13 if right1 - left1 > end - start: 14 start, end = left1, right1 15 if right2 - left2 > end - start: 16 start, end = left2, right2 17 return s[start: end + 1] 18 19 作者:LeetCode-Solution 20 链接:https://leetcode-cn.com/problems/longest-palindromic-substring/solution/zui-chang-hui-wen-zi-chuan-by-leetcode-solution/ 21 来源:力扣(LeetCode) 22 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。