Permutations II
剪枝
#coding=utf-8
class Solution(object):
def permuteUnique(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if len(nums)==0:
return []
if len(nums)==1:
return [nums]
nums.sort()
res=[]
for i in range(len(nums)):
if i>0 and nums[i]==nums[i-1]:
continue
for j in self.permuteUnique(nums[:i]+nums[i+1:]):
res.append([nums[i]]+j)
return res
Rotate Image
#coding=utf-8
class Solution(object):
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
if len(matrix)<2 and len(matrix[0])<2:
return
res=[[0 for i in range(len(matrix))] for j in range(len(matrix[0]))]
for i in range(len(matrix)-1,-1,-1):
print len(matrix)-i
for j in range(len(matrix[0])):
res[j][len(matrix)-1-i]=matrix[i][j]
matrix=res
return matrix
先转置再每一行逆序,不用返回任何东西
#coding=utf-8
class Solution(object):
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
for i in range(len(matrix)):
for j in range(i,len(matrix[0])):
matrix[i][j],matrix[j][i]=matrix[j][i],matrix[i][j]
for i in range(len(matrix)):
matrix[i].reverse()
Group Anagrams
我这个方法挺麻烦的
#coding=utf-8
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
d={}
temp=0
res=[]
for i in strs:
s=''.join(sorted(i))
if s not in d:
d[s]=temp
temp+=1
res.append([])
res[d[s]].append(i)
return res
Pow(x, n)
用了上次计算矩阵的幂的右移的方法
#coding=utf-8
class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
res=1
if n==0:
return 1
if n==1:
return x
temp=abs(n)
while temp:
if temp&1:
res*=x
x*=x
temp>>=1
if n<0:
res=1/res
return res