class : defmyPow(self, x, n): """ :type x: float :type n: int :rtype: float """ if x == 0: return0 if n == 0: return1 elif n > 0: if n % 2 == 0: return self.myPow(x * x, int(n / 2)) elif n % 2 != 0: return x * self.myPow(x, n - 1) else: return1 / self.myPow(x, -n)
x = 2 n = 10 sol = Solution() print(sol.myPow(x, n))
按常规一个一个迭代乘法,会出现超时错误,这种对半乘的话确实快很多。
P49
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
class : defgroupAnagrams(self, strs): """ :type strs: List[str] :rtype: List[List[str]] """ out = {} for s in strs: out.setdefault(''.join(sorted(s)), []).append(s)
return list(out.values())
sol = Solution() print(sol.groupAnagrams(['', '', 'ab']))
class : defgroupAnagrams(self, strs): """ :type strs: List[str] :rtype: List[List[str]] """ out = [] for c in strs: count = True for o in out: if c == ''and c == o[0]: o.append(c) count = False if len(o[0]) == len(c) and c in pailie(o[0]) and count: o.append(c) count = False if count: out.append([c])
return out
defpailie(strs): if len(strs) == 1: return strs result = [] for idx, c in enumerate(strs): result += [c + substr for substr in pailie(strs[:idx] + strs[idx + 1:])] return result
sol = Solution() print(sol.groupAnagrams(['aba', 'bac', 'ab']))
近期评论