题目网址:leetcode
题目名称
1. 两数之和
解题思路在我的这篇博客里写过
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
# 字典能很好的直接访问到,哪个元素在,哪个元素不在,而且还能帮你存放一个附加的value值
map_dict = {
} # 数值:下标
for i, num in enumerate(nums):
if target-num in map_dict:
return [i, map_dict[target-num]]
else:
map_dict[num] = i
3. 无重复字符的最长子串
滑动窗口,类似的题目还有绳子覆盖最多的点数
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
# 滑动窗口问题
l,r = 0,0 # 定义窗口的左右边界
maxn = 0 # 记录最大值
while l <= len(s)-1: # 左边界可以一直试到最后一个位置
while (r+1 <= len(s)-1) and (s[r+1] not in s[l:r+1]): # r的增加不能超过右边界
r+=1
# 右边界停留在了合适的位置上,计算一下当前的长度吧
if r-l+1 > maxn:
maxn = r-l+1
l+=1 # 左边界滑动一格
return maxn
20. 有效的括号
仍然是配对问题
class Solution:
def isValid(self, s: str) -> bool:
# 要考虑到字符嵌套的情况"{[]}"
# 设置一个字典,存放映射关系,“右”:“左”
map_dict = {
')':'(',