• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Uriel's Corner

            Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
            posts - 0, comments - 50, trackbacks - 0, articles - 594

            [LeetCode]刷題記錄 2021.01

            Posted on 2022-10-23 10:14 Uriel 閱讀(34) 評論(0)  編輯 收藏 引用 所屬分類: 閑來無事重切Leet Code

            2021.01.18

            AC:

            Easy 1,7,9,13,14


            2021.01.20

            AC:

            Easy 20


            2021.01.21

            AC

            Easy 21,26,27,28,29,38,53,58,66,67,69,70,83,88


            2021.01.23

            AC

            Easy 100


            2021.01.24

            AC

            Easy 101,104


            2021.01.25

            AC

            Easy 107,108,110,111


            2021.01.26

            AC

            Easy 112,118,119,121,122,125,136


            2021.01.27

            AC

            Easy 141,155,160,167


            2021.01.28

            AC

            Easy 168,169,171


            2021.01.30

            AC

            Easy

            172,278


            2021.01.31

            AC

            Easy

            283,290,303,326,342,344



            題目分類

            1 Two Sum 簡單數學題,二重循環看是否有兩個數之和等于要求的數


            7 Reverse Integer 簡單字符串處理,不超過int上下限就翻轉字符串(加一些特判)


            9 Palindrome Number 簡單字符串處理,判斷回文數(直接python字符串翻轉判斷)


            13 Roman to Integer 簡單字符串處理,要特殊處理IV這種(如果后一個字母代表的數字比前一個大,加特判)


            14 Longest Common Prefix 簡單字符串處理,一堆字符串的最長公共前綴(以第一個字符串為開始與之后的字符串匹配,匹配不到就不斷遞減長度)


            20 Valid Parentheses 簡單模擬,棧操作


            21 Merge Two Sorted Lists 簡單操作,合并有序鏈表


            26 Remove Duplicates from Sorted Array 數組去重,python的list pop操作


            27 Remove Element 數組去除指定值的元素,python的list pop操作


            28 Implement strStr() 字符串查找


            35 Search Insert Position 尋找有序數組的插入點


            38 Count and Say 簡單模擬


            53 Maximum Subarray 最大連續子序列


            58 Length of Last Word 句子中最后一個單詞長度,注意特判(輸入只有一堆宮格,或者最后一個單詞后面還有空格,或者空串)


            66 Plus One 大數加法模擬(+1)(顛倒字符串先)


            67 Add Binary 二進制加法模擬(顛倒字符串先)


            69 Sqrt(x) 求sqrt,精確到整數(二分0~x,注意特判x=1)


            70 Climbing Stairs n級臺階,每次爬1 或2層,問一共幾種爬法,dp[n]=dp[n-1]+dp[n-2],因為只要記錄過去的兩個值,可以用兩個變量記錄,不用開dp[n]數組


            83 Remove Duplicates from Sorted List 鏈表去重if p.next.val == p.val: p.next = p.next.next


            88 Merge Sorted Array 合并有序數組,需要插入時把數組某個值之后的值后移


            100 Same Tree 判斷兩棵二叉樹是否一樣,簡單遞歸,注意類中函數自我調用self.,注意空樹的特判

            if p == None and q != None:

                        return False

                    if p != None and q == None:

                        return False

                    if p != None and q != None and p.val != q.val:

                        return False

                    if p != None and q != None:

                        return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)

                    return True


            101 Symmetric Tree 判斷二叉樹是否對稱,同時DFS,一個從左到右,一個從右到左,注意python類變量的使用self.xx


            104 Maximum Depth of Binary Tree 計算二叉樹深度,簡單DFS

                max_depth = 1

                def DFS_Tree(self, root, depth):

                    self.max_depth = max(self.max_depth, depth)

                    if root.left != None:

                        self.DFS_Tree(root.left, depth + 1)

                    if root.right != None:

                        self.DFS_Tree(root.right, depth + 1)

                    return

                def maxDepth(self, root):

                    """

                    :type root: TreeNode

                    :rtype: int

                    """

                    if root == None:

                        return 0

                    self.DFS_Tree(root, 1)

                    return self.max_depth


            107 Binary Tree Level Order Traversal II 按照深度輸出二叉樹每一層的所有值,BFS


            108 Convert Sorted Array to Binary Search Tree DFS,每次從中間等分,創造兩棵子樹


            110 Balanced Binary Tree 判斷是否是二叉平衡樹,DFS


            111 Minimum Depth of Binary Tree 計算二叉樹最小葉子的深度(兩個兒子都沒有才是葉子),DFS or BFS


            112 Path Sum 二叉樹是否有一條path只和等于給定值,DFS,注意一直要加到葉子結點,以及注意判斷空樹


            118 Pascal's Triangle 上一行相鄰元素求和,一行行往下算,注意判0


            119 Pascal's Triangle II 與118一樣,但只要輸出第k行的值,并且只能額外使用O(k)Memory,只要記住前一行的值就行


            121 Best Time to Buy and Sell Stock 給定每天的股價,問何日買進何日賣出最劃算,每次記錄從1~i-1的股價最大值,嘗試第i日賣出是否更好


            122 Best Time to Buy and Sell Stock II 給定每天的股價,可以多次買入/賣出,問一共最多賺多少,相鄰元素相減,大于零就加上(大于零相當于多在手上拿一天,否則就是中間賣掉再次買入,貪心)


            125 Valid Palindrome 判斷字符串是否對稱(字母數字以外的字符不算)。去掉其他字符,大寫都變為小寫之后顛倒字符串看是否一樣(有更好解法)


            136 Single Number 一堆數里面只有一個出現一次,其他都出現兩次,找出出現一次的,所有數全部異或一遍,最后的值即為所求


            141 Linked List Cycle 判斷單向鏈表中是否有環,開兩個指針,一個一次跳一步,一個一次跳兩步,如果兩個指針相遇則有環


            155 Min Stack 模擬棧,注意getMin()需要在O(1)返回結果,所以每次入棧的時候順便記錄當前棧中的最小值


            160 Intersection of Two Linked Lists 判斷兩條單向鏈表是否從某一點開始合成同一個鏈表,兩個指針從兩個開頭開始找,如果一個找完了就從另一條開始(相當于兩個指針交換位置重新找),如果在某個點兩個指針重合了,那就是兩個鏈表有合并

            theadA = headA

                    theadB = headB

                    while theadA != theadB:

                        #print(theadA.val)

                        #print(theadB.val)

                        if theadA != None:

                            theadA = theadA.next

                        else:

                            theadA = headB

                        if theadB != None:

                            theadB = theadB.next

                        else:

                            theadB = headA

                    return theadA


            167 Two Sum II - Input array is sorted 在給定的遞增數列中找兩個數,之和等于給定值(保證有解)

            解法一:兩個游標,分別從頭和尾向中間游動,和比給定值小左側加一,否則右側加一

            解法二,左側游標從1-n遍歷,右側用二分,時間和解法一差不太多,注意二分寫法

                l = i + 1

                        r = len(numbers)

                        while l < r:

                            mid = (l + r) // 2

                            if numbers[i] + numbers[mid] == target:

                                return [i + 1, mid + 1]

                            if numbers[i] + numbers[mid] < target:

                                l = mid + 1

                            else:

                                r = mid


            168 Excel Sheet Column Title 將數字轉成excel的A-AA-。。。ZZZ這個的格式,不斷取模再轉換


            169 Majority Element 求數組中出現次數超過半數的數字

            解法一:直接sort,返回中間的數字

            解法二:哈希表,python的dict

            解法三:bit voting

            解法四:分治

            解法五:C++ nth_element() 


            171 Excel Sheet Column Number 將excel的A-AA-。。。ZZZ這個的格式轉為數字,建個dict存字母到數字的映射,從第一個字符開始不斷*26+值

            PS:python的ord()函數可以 直接返回ascii碼值


            172. Factorial Trailing Zeroes,算n的階乘末尾0的數量,即計算1-n中5的數量

                    t = 0

                    while n >= 5:

                        n = n // 5

                        t = t + n

                    return t


            278. First Bad Version,1-n個版本,從第m個開始后面都是bad,每次可以調用isBadVersion(i)判斷I是不是好的,問從第幾個開始是bad,簡單二分

                    l = 1

                    r = n

                    if n == 1:

                        return 1

                    while l <= r:

                        mid = (l + r) // 2

                        #print mid

                        if isBadVersion(mid):

                            if mid == 1 or isBadVersion(mid - 1) == False:

                                return mid

                            r = mid

                        else:

                            l = mid + 1


            283. Move Zeroes 把數字串中的0挪到末尾,利用python的list操作

                    l = len(nums)

                    nums[:]=[i for i in nums if i != 0]

                    nums += [0]*(l - len(nums))


            290. Word Pattern 判斷字符串是否符合某種pattern,python的dict操作,注意如下兩種的區別

            Input: pattern = "abba", s = "dog cat cat dog"

            Output: true

            Input: pattern = "abba", s = "dog dog dog dog"

            Output: false


            292. Nim Game n個石子,輪流取,每次1-3顆,問給定n是否能贏,n若是4(3+1)的倍數必輸,其他都贏


            303. Range Sum Query - Immutable 區間求和,多次query,預處理0-i的和,return self.sums[j + 1] - self.sums[i]


            326. Power of Three 判斷一個數是否是3的某次方

            解法一,不斷除3

            解法二,n > 0 and math.ceil(log10(n) / log10(3)) == int(log10(n) / log10(3))


            342. Power of Four 判斷一個數是否是4的某次方,同326


            344. Reverse String 字符串翻轉

            解法一,str.reverse()

            解法二,左右兩個游標


            99国内精品久久久久久久| 狠狠88综合久久久久综合网| 欧美粉嫩小泬久久久久久久| 亚洲国产综合久久天堂| 精品综合久久久久久98| 久久精品成人免费网站| 一本久道久久综合狠狠躁AV| 亚洲中文字幕无码久久2020| 国产精品永久久久久久久久久| 四虎国产精品成人免费久久| 99久久国产综合精品成人影院| 国产69精品久久久久观看软件| 久久久久中文字幕| 久久精品成人欧美大片| 亚洲v国产v天堂a无码久久| 久久中文骚妇内射| 日韩人妻无码一区二区三区久久99| 伊人久久综在合线亚洲2019| 色偷偷88888欧美精品久久久| 久久天天躁狠狠躁夜夜2020| 色综合久久88色综合天天| 久久久久久久97| 久久丫精品国产亚洲av不卡 | 99久久人妻无码精品系列| 日韩十八禁一区二区久久| 91精品国产91久久| 88久久精品无码一区二区毛片 | 波多野结衣久久精品| 久久精品视频91| 日日狠狠久久偷偷色综合0| 久久精品国产亚洲AV不卡| 国产成人精品综合久久久| 99久久精品久久久久久清纯| WWW婷婷AV久久久影片| 狠狠狠色丁香婷婷综合久久五月 | 久久婷婷色综合一区二区| 国产精品乱码久久久久久软件| 2019久久久高清456| 久久久久国产精品嫩草影院| 国产成人精品综合久久久久| 亚洲中文字幕无码久久2020|