發表文章

目前顯示的是 2018的文章

[ LeetCode ] 179. Largest Number

Given a list of non negative integers, arrange them such that they form the largest number. Example 1: Input: [10,2] Output: " 210" Example 2: Input: [3,30,34,5,9] Output: " 9534330" Note: The result may be very large, so you need to return a string instead of an integer. https://leetcode.com/problems/largest-number/description/ 這題其實是排序問題,A+B > B+A 是關鍵。用快速排序可以很漂亮的實現演算法。 class Solution: "" " @param num s: A list of non negative integers @return: A string "" " def largestNumber(self, num): num = [str( x ) for x in num] #num. sort (cmp=lambda x , y : cmp( y + x , x + y )) num = self.quickSort(num) largest = '' . join (num) return largest.lstrip( '0' ) or '0' def quickSort(self, num): if len (num) < 2 : return num pivot = num. pop () left = [] right = [] ...

[ LeetCode ] 337. House Robber III

# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution ( object ) : def rob ( self , root ) : """ :type root: TreeNode :rtype: int """ res = [ 0 ] d = {} def dfs ( node ) : if not node : return 0 if node in d : return d[ node ] col_1 = dfs( node .left) + dfs( node .right) col_2 = node .val if node .left : col_2 += dfs( node .left.left) + dfs( node .left.right) if node .right : col_2 += dfs( node .right.left) + dfs( node .right.right) d[ node ] = max (col_1 , col_2) return max (col_1 , col_2) return dfs( root )

String Summary

151 .  Reverse Words in a String     def reverseWords_02(self, s):         """         :type s: str         :rtype: str         """         def revS(start, end):             while start < end:                 s[start], s[end] = s[end], s[start]                 start, end = start + 1, end - 1         s = s.strip()         s = list(s)         space = 0         count = 0         for i in range(len(s)):             if s[i] == " " and space < 1:     ...

Array Summary

Use two pointer as array's benefice   Use hash table may reduce the time complexity from O(n^2) to O(n log n)   832 .  Flipping an Image class Solution(object):     def flipAndInvertImage(self, A):         """         :type A: List[List[int]]         :rtype: List[List[int]]         """         if not A:             return []         for i in range(len(A)):             A[i] = A[i][::-1]             for j in range(len(A)):                 A[i][j] = 1 ^ A[i][j]         ret...