题46(中等):
分析:
见注释
python代码:
class Solution:def permute(self, nums: List[int]) -> List[List[int]]:#长度小于6,不就是告诉我用递归嘛res=[]#递归函数def call_back(p_list,n_list):#判断终止条件if n_list==[]:returnif len(n_list)==1:p_list.extend(n_list)res.append(p_list)else:for i in range(len(n_list)):#注意数组的深浅拷贝,列表作为形参什么时候回改变p_list_new=p_list.copy()p_list_new.append(n_list[i])n_list_new=n_list[:i]+n_list[i+1:]call_back(p_list_new,n_list_new)call_back([],nums)return res
题47(中等):
分析:
额,直接在上面的代码下加一个判断条件
python代码:
法1:
class Solution:def permuteUnique(self, nums: List[int]) -> List[List[int]]:#长度小于6,不就是告诉我用递归嘛res=[]#递归函数def call_back(p_list,n_list):#判断终止条件if n_list==[]:returnif len(n_list)==1:p_list.extend(n_list)if p_list not in res:res.append(p_list)else:for i in range(len(n_list)):p_list_new=p_list.copy()p_list_new.append(n_list[i])n_list_new=n_list[:i]+n_list[i+1:]call_back(p_list_new,n_list_new)call_back([],nums)return res
法2:
也可以在递归迭代里面加条件
class Solution:def permuteUnique(self, nums: List[int]) -> List[List[int]]:#长度小于6,不就是告诉我用递归嘛res=[]#递归函数def call_back(p_list,n_list):#判断终止条件if n_list==[]:returnif len(n_list)==1:p_list.extend(n_list)res.append(p_list)else:for i in range(len(n_list)):if n_list[i] in n_list[:i]:continuep_list_new=p_list.copy()p_list_new.append(n_list[i])n_list_new=n_list[:i]+n_list[i+1:]call_back(p_list_new,n_list_new)call_back([],nums)return res
题48(中等):
分析:
这道题我是没什么思路,就是想弄一个一样大的空间存储,结果我看了评论区,发现他们的空间思维挺好的,先上下翻再对角线翻,其实也是,我应该要想到的,题目说了直接修改,就是不想我们用第三方,而且不知道几行几列,所以一个找特征,对角线和中线,所以就变出来了
python代码:
class Solution:def rotate(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""#上下翻n_row=len(matrix)n_col=len(matrix[0])for i in range((n_row)//2):for j in range(n_col):tmp=matrix[i][j]matrix[i][j]=matrix[n_row-1-i][j]matrix[n_row-1-i][j]=tmp#对角线翻for i in range(n_row):for j in range(i):tmp=matrix[i][j]matrix[i][j]=matrix[j][i]matrix[j][i]=tmp
题49(中等):
分析:
没什么分析的
python代码:
class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:res=[]s_filter={}for i in strs:s=''.join(sorted(i))if s in s_filter.keys():s_filter[s].append(i)else:s_filter[s]=[i]return list(s_filter.values())
题50(中等):
分析:
可以选择循环做,只能算简单,中等都算不上,恐怕是增强信心用的
python代码:
class Solution:def myPow(self, x: float, n: int) -> float:return x**n