• <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
            給一列數(shù),求其中三個(gè)數(shù)和為0有多少種選擇(輸出所有可能性,需要去重)
            思路一(速度一般):
            先sort list,枚舉第一個(gè)數(shù)i=1~n-2,然后設(shè)置兩個(gè)游標(biāo),左邊從i+1向右,右邊從n向左,如果兩個(gè)游標(biāo)對(duì)應(yīng)的數(shù)之和小于-nums[i],第一個(gè)游標(biāo)右移,否則第二個(gè)右邊左移,如果正好等于-nums[i],看是否與前一個(gè)set重復(fù),不重復(fù)則加入答案
            一開(kāi)始嘗試記錄所有答案,最后去重,會(huì)TLE,邊處理邊判重需要注意方式,當(dāng)答案集合為空或者不是(第一個(gè)數(shù)與上一個(gè)答案一樣第二個(gè)數(shù)卻小于等于上一個(gè)答案)時(shí),加入答案集合
            "
            if tp == [] or not (nums[i] == tp[-1][0] and nums[pos1] <= tp[-1][1]):
            "
            可以用以下case做測(cè)試(自己之前的Output不能通過(guò)這個(gè)case,WA了一次):
            "
            Input:
            [-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]
            Output:
            [[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2],[-2,-2,4],[-2,0,2],[-2,-2,4],[-2,0,2]]
            Expected:
            [[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2],[-2,-2,4],[-2,0,2]]
            "

            Runtime: 6730 ms, faster than 9.07% of Python online submissions for 3Sum.
            Memory Usage: 16.7 MB, less than 79.63% of Python online submissions for 3Sum.
             1 #15
             2 #Runtime: 6730 ms
             3 #Memory Usage: 16.7 MB
             4 
             5 class Solution(object):
             6     def threeSum(self, nums):
             7         """
             8         :type nums: List[int]
             9         :rtype: List[List[int]]
            10         """
            11         nums.sort()
            12         d = {}
            13         for i in range(len(nums)):
            14             d[nums[i]] = i
            15         tp = []
            16         ans = []
            17         for i in range(len(nums)):
            18             pos1 = i + 1
            19             pos2 = len(nums) - 1
            20             while pos1 < pos2:
            21                 if nums[pos1] + nums[pos2] == -nums[i]:
            22                     if tp == [] or not (nums[i] == tp[-1][0] and nums[pos1] <= tp[-1][1]):
            23                         tp.append([nums[i], nums[pos1], nums[pos2]])
            24                     pos1 += 1
            25                     pos2 -= 1
            26                 elif nums[pos1] + nums[pos2] > -nums[i]:
            27                     pos2 -= 1
            28                 else:
            29                     pos1 += 1
            30         return tp

            思路二(比思路一快一點(diǎn)):
            先sort,再用dict記錄這一列數(shù)里面每一種值最后出現(xiàn)的下標(biāo)位置
            兩重for循環(huán)枚舉前兩個(gè)數(shù)i,j,看第三個(gè)數(shù)在不在dict里,如果在的話,要求下標(biāo)k>j>i,與思路一一樣,注意判斷是否與現(xiàn)有的數(shù)重復(fù),如果全部加入結(jié)果集合最后再判重會(huì)TLE

            Runtime: 3584 ms, faster than 21.33% of Python online submissions for 3Sum.
            Memory Usage: 17.2 MB, less than 19.67% of Python online submissions for 3Sum.

             1 #15
             2 #Runtime: 3584 ms
             3 #Memory Usage: 17.2 MB
             4 
             5 class Solution(object):
             6     def threeSum(self, nums):
             7         """
             8         :type nums: List[int]
             9         :rtype: List[List[int]]
            10         """
            11         nums.sort()
            12         d = {}
            13         for i in range(len(nums)):
            14             d[nums[i]] = i
            15         tp = []
            16         ans = []
            17         for i in range(len(nums)):
            18             for j in range(i + 1, len(nums)):
            19                 if -(nums[i] + nums[j]) in d:
            20                     k = d[-(nums[i] + nums[j])]
            21                     if k > j and (tp == [] or not (nums[i] == tp[-1][0] and nums[j] <= tp[-1][1])):
            22                         tp.append([nums[i], nums[j], nums[k]])
            23         return tp




            无遮挡粉嫩小泬久久久久久久| 久久精品女人天堂AV麻| 一级做a爰片久久毛片看看| 久久久久这里只有精品| 亚洲精品第一综合99久久| 午夜久久久久久禁播电影| 伊人久久免费视频| 亚洲欧美日韩久久精品| 777午夜精品久久av蜜臀| 欧美久久久久久精选9999| 亚洲七七久久精品中文国产| 国产午夜免费高清久久影院| 久久中文精品无码中文字幕| 久久久久免费看成人影片| 国产69精品久久久久99| 亚洲∧v久久久无码精品| 久久本道久久综合伊人| 久久婷婷五月综合97色| 久久伊人五月天论坛| 青青草原综合久久| 国产精品久久亚洲不卡动漫| 久久亚洲欧洲国产综合| 久久97精品久久久久久久不卡| 亚洲狠狠综合久久| 中文字幕精品无码久久久久久3D日动漫| 精品熟女少妇av免费久久| 久久综合久久综合久久综合| 亚洲中文字幕无码久久2017| 99久久免费国产精品特黄| 国産精品久久久久久久| www.久久热.com| 99久久超碰中文字幕伊人| 伊人色综合久久天天人手人婷 | 久久97久久97精品免视看| 亚洲va中文字幕无码久久不卡| 精品欧美一区二区三区久久久| 久久国产乱子伦免费精品| 久久人妻少妇嫩草AV蜜桃| 久久精品国产精品亚洲精品| 丁香久久婷婷国产午夜视频| 久久天堂电影网|