锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久国产乱子伦免费精品,国产精品久久久久蜜芽,99久久精品国产一区二区蜜芽http://www.shnenglu.com/Uriel/category/21437.htmlResearch Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learningzh-cnTue, 07 Nov 2023 22:31:45 GMTTue, 07 Nov 2023 22:31:45 GMT60[LeetCode]2251. Number of Flowers in Full Bloom (Hard) Python3-2023.10.11http://www.shnenglu.com/Uriel/articles/230167.htmlUrielUrielMon, 06 Nov 2023 17:53:00 GMThttp://www.shnenglu.com/Uriel/articles/230167.htmlhttp://www.shnenglu.com/Uriel/comments/230167.htmlhttp://www.shnenglu.com/Uriel/articles/230167.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/230167.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/230167.html

 1 #2251
 2 #Runtime: 1083 ms (Beats 15.71%)
 3 #Memory: 44.7 MB (Beats 32.83%)
 4 
 5 class Solution:
 6     def fullBloomFlowers(self, flowers: List[List[int]], people: List[int]) -> List[int]:
 7         st = sorted(flowers, key=lambda x:x[0])
 8         ed = sorted(flowers, key=lambda x:x[1])
 9         ans = []
10         for x in people:
11             i = bisect_left(ed, x, key=lambda x:x[1])
12             j = bisect_right(st, x, key=lambda x:x[0])
13             ans.append(j - i)
14         return ans


Uriel 2023-11-07 01:53 鍙戣〃璇勮
]]>
[LeetCode]1095. Find in Mountain Array (Hard) Python-2023.10.12http://www.shnenglu.com/Uriel/articles/230144.htmlUrielUrielThu, 12 Oct 2023 13:31:00 GMThttp://www.shnenglu.com/Uriel/articles/230144.htmlhttp://www.shnenglu.com/Uriel/comments/230144.htmlhttp://www.shnenglu.com/Uriel/articles/230144.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/230144.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/230144.html鍏堜笁鍒嗘眰鏋佸鹼紝鍐嶅垎宸﹀彸涓ゆ浜屽垎鏌ユ壘

 1 #1095
 2 #Runtime: 32 ms (Beats 61.2%)
 3 #Memory: 14.5 MB (Beats 5.8%)
 4 
 5 # """
 6 # This is MountainArray's API interface.
 7 # You should not implement it, or speculate about its implementation
 8 # """
 9 #class MountainArray(object):
10 #    def get(self, index):
11 #        """
12 #        :type index: int
13 #        :rtype int
14 #        """
15 #
16 #    def length(self):
17 #        """
18 #        :rtype int
19 #        """
20 
21 class Solution(object):
22     def findInMountainArray(self, target, mountain_arr):
23         """
24         :type target: integer
25         :type mountain_arr: MountainArray
26         :rtype: integer
27         """
28         def b_search(l, r, di):
29             while l < r:
30                 mid = (l + r) // 2
31                 if di == 0:
32                     if mountain_arr.get(mid) < target:
33                         l = mid + 1
34                     else:
35                         r = mid
36                 else:
37                     if mountain_arr.get(mid) > target:
38                         l = mid + 1
39                     else:
40                         r = mid
41             return l
42 
43         l, r = 0, mountain_arr.length() - 1
44         eps = 1e-6
45         while l < r:
46             mid = (l + r) // 2
47             midmid = (mid + r) // 2
48             if mountain_arr.get(mid) >= mountain_arr.get(midmid):
49                 r = midmid
50             else:
51                 l = mid + 1
52         idx = b_search(0, l, 0)
53         if mountain_arr.get(idx) == target:
54             return idx
55         idx = b_search(l + 1, mountain_arr.length() - 1, 1)
56         if mountain_arr.get(idx) == target:
57             return idx
58         return -1


Uriel 2023-10-12 21:31 鍙戣〃璇勮
]]>
[LeetCode]34. Find First and Last Position of Element in Sorted Array (Medium) Python-2023.10.09http://www.shnenglu.com/Uriel/articles/230135.htmlUrielUrielMon, 09 Oct 2023 10:56:00 GMThttp://www.shnenglu.com/Uriel/articles/230135.htmlhttp://www.shnenglu.com/Uriel/comments/230135.htmlhttp://www.shnenglu.com/Uriel/articles/230135.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/230135.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/230135.html

#34
#
Runtime: 67 ms (Beats 6.68%)
#
Memory: 14.4 MB (Beats 65.32%)

class Solution(object):
    def searchRange(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        
"""
        l = bisect.bisect_left(nums, target)
        r = bisect.bisect_right(nums, target)
        if l > r - 1:
            return [-1, -1]
        return [l, r - 1]


Uriel 2023-10-09 18:56 鍙戣〃璇勮
]]>
[LeetCode]1337. The K Weakest Rows in a Matrix (Easy) Python-2023.06.18http://www.shnenglu.com/Uriel/articles/230088.htmlUrielUrielMon, 18 Sep 2023 08:21:00 GMThttp://www.shnenglu.com/Uriel/articles/230088.htmlhttp://www.shnenglu.com/Uriel/comments/230088.htmlhttp://www.shnenglu.com/Uriel/articles/230088.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/230088.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/230088.html

 1 #1337
 2 #Runtime: 71 ms (Beats 88.26%)
 3 #Memory: 13.6 MB (Beats 61.50%)
 4 
 5 class Solution(object):
 6     def kWeakestRows(self, mat, k):
 7         """
 8         :type mat: List[List[int]]
 9         :type k: int
10         :rtype: List[int]
11         """
12         def bi_sect(x):
13             l, r = 0, len(mat[0])
14             while l < r:
15                 mid = (l + r) // 2
16                 if mat[x][mid] == 1:
17                     l = mid + 1
18                 else:
19                     r = mid
20             return l
21 
22         hq = []
23         ans = []
24         for r in xrange(len(mat)):
25             p = bi_sect(r)
26             heapq.heappush(hq, (p, r))
27         for _ in xrange(k):
28             ans.append(heappop(hq)[1])
29         return ans


Uriel 2023-09-18 16:21 鍙戣〃璇勮
]]>
[LeetCode]2616. Minimize the Maximum Difference of Pairs (Medium) Python-2023.08.09http://www.shnenglu.com/Uriel/articles/230009.htmlUrielUrielWed, 09 Aug 2023 13:53:00 GMThttp://www.shnenglu.com/Uriel/articles/230009.htmlhttp://www.shnenglu.com/Uriel/comments/230009.htmlhttp://www.shnenglu.com/Uriel/articles/230009.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/230009.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/230009.html

 1 #2616
 2 #Runtime: 831 ms (Beats 100%)
 3 #Memory: 25.4 MB (Beats 100%)
 4 
 5 class Solution(object):
 6     def minimizeMax(self, nums, p):
 7         """
 8         :type nums: List[int]
 9         :type p: int
10         :rtype: int
11         """
12         n = len(nums)
13         nums.sort()
14         l, r = 0, nums[-1] - nums[0]
15 
16         def cal(dif):
17             nt = 0
18             i = 1
19             while i < len(nums):
20                 if nums[i] - nums[i - 1] <= dif:
21                     i += 1
22                     nt += 1
23                 i += 1
24             return nt
25 
26         while l < r:
27             mid = (l + r) // 2
28             if cal(mid) >= p:
29                 r = mid
30             else:
31                 l = mid + 1
32         return l


Uriel 2023-08-09 21:53 鍙戣〃璇勮
]]>
[LeetCode]33. Search in Rotated Sorted Array (Medium) Python-2023.08.08http://www.shnenglu.com/Uriel/articles/230008.htmlUrielUrielTue, 08 Aug 2023 08:55:00 GMThttp://www.shnenglu.com/Uriel/articles/230008.htmlhttp://www.shnenglu.com/Uriel/comments/230008.htmlhttp://www.shnenglu.com/Uriel/articles/230008.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/230008.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/230008.html
 1 #33
 2 #Runtime: 19 ms (Beats 92.37%)
 3 #Memory: 13.5 MB (Beats 57.32%)
 4 
 5 class Solution(object):
 6     def search(self, nums, target):
 7         """
 8         :type nums: List[int]
 9         :type target: int
10         :rtype: int
11         """
12         l, r = 0, len(nums) - 1
13         while l <= r:
14             mid = (l + r) // 2
15             if nums[mid] == target:
16                 return mid
17             if nums[mid] >= nums[0]:
18                 if nums[0] <= target and nums[mid] > target:
19                     r = mid - 1
20                 else:
21                     l = mid + 1
22             else:
23                 if nums[mid] < target and nums[-1] >= target:
24                     l = mid + 1
25                 else:
26                     r = mid - 1
27         return -1


Uriel 2023-08-08 16:55 鍙戣〃璇勮
]]>
[LeetCode]74. Search a 2D Matrix (Medium) C++/Python-2014.01.09/2023.08.07http://www.shnenglu.com/Uriel/articles/230006.htmlUrielUrielMon, 07 Aug 2023 06:35:00 GMThttp://www.shnenglu.com/Uriel/articles/230006.htmlhttp://www.shnenglu.com/Uriel/comments/230006.htmlhttp://www.shnenglu.com/Uriel/articles/230006.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/230006.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/230006.html
鏂規硶涓錛氬綋鎴愪竴涓?D閫掑鍚戦噺錛屼簩鍒嗭紝O(log(N*M))
Python瀹炵幇
 1 #74
 2 #Runtime: 19 ms (Beats 97.2%)
 3 #Memory: 13.6 MB (Beats 95.32%)
 4 
 5 class Solution(object):
 6     def searchMatrix(self, matrix, target):
 7         """
 8         :type matrix: List[List[int]]
 9         :type target: int
10         :rtype: bool
11         """
12         l, r = 0, len(matrix[0]) * len(matrix) - 1
13         while l < r:
14             mid = (l + r) // 2
15             if matrix[mid // len(matrix[0])][mid % len(matrix[0])] < target:
16                 l = mid + 1
17             else:
18                 r = mid
19         return matrix[l // len(matrix[0])][l % len(matrix[0])] == target


鏂規硶浜岋細鍏堢‘瀹氬湪鍝竴琛岋紝鍐嶆壂鎻忚琛屾墍鏈夊垪錛孫(N+M)
C++瀹炵幇
 1 //74
 2 //Runtime: 56 ms (Beats 16.15%)
 3 
 4 class Solution {
 5 public:
 6     bool searchMatrix(vector<vector<int> > &matrix, int target) {
 7         int n = matrix.size();
 8         int m = matrix[0].size();
 9         int i, j;
10         for(i = 0; i < n; ++i) {
11             if(matrix[i][0] > target) {
12                 --i;
13                 break;
14             }
15             if(i == n - 1) break;
16         }
17         if(i < 0) return false;
18         for(j = 0; j < m; ++j) {
19             if(matrix[i][j] == target) return true;
20         }
21         return false;
22     }
23 };



Uriel 2023-08-07 14:35 鍙戣〃璇勮
]]>
[LeetCode]2141. Maximum Running Time of N Computers (Hard) Python-2023.07.27http://www.shnenglu.com/Uriel/articles/229994.htmlUrielUrielThu, 27 Jul 2023 10:34:00 GMThttp://www.shnenglu.com/Uriel/articles/229994.htmlhttp://www.shnenglu.com/Uriel/comments/229994.htmlhttp://www.shnenglu.com/Uriel/articles/229994.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229994.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229994.html鏈変竴浜涚數姹狅紝姣忎釜鐢墊睜鍙互浣跨敤batteries[i]鏃墮棿錛岄棶瑕佸悓鏃惰繍琛宯鍙版満鍣紝姣忓彴鏈哄櫒闇瑕佷竴涓數姹狅紝鏈澶氬彲浠ヨ繍琛屽涔咃紝浜屽垎
涓寮濮媟鍙栧皬浜嗙偣錛學A*1


 1 #2141
 2 #Runtime: 2010 ms (Beats 33.33%)
 3 #Memory: 25.1 MB (Beats 100%)
 4 
 5 class Solution(object):
 6     def maxRunTime(self, n, batteries):
 7         """
 8         :type n: int
 9         :type batteries: List[int]
10         :rtype: int
11         """
12         l, r = 0, sum(batteries) // n + 1
13         while l <= r:
14             mid = (l + r) // 2
15             if sum(min(mid, b) for b in batteries) >= n * mid:
16                 l = mid + 1
17             else:
18                 r = mid - 1
19         return r


Uriel 2023-07-27 18:34 鍙戣〃璇勮
]]>
[LeetCode]852. Peak Index in a Mountain Array (Medium) Python-2023.07.26http://www.shnenglu.com/Uriel/articles/229992.htmlUrielUrielWed, 26 Jul 2023 09:22:00 GMThttp://www.shnenglu.com/Uriel/articles/229992.htmlhttp://www.shnenglu.com/Uriel/comments/229992.htmlhttp://www.shnenglu.com/Uriel/articles/229992.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229992.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229992.html

#852
#
Runtime: 2487 ms (Beats 90.91%)
#
Memory: 25 MB (Beats 72.73%)

class Solution(object):
    def minSpeedOnTime(self, dist, hour):
        """
        :type dist: List[int]
        :type hour: float
        :rtype: int
        
"""
        eps = 1e-6
        l, r = 1, 1000000000
        if hour <= len(dist) - 1:
            return -1
        while l < r:
            mid = (l + r) // 2
            t = 0
            for x in dist[:-1]:
                t += x // mid
                if x % mid:
                    t += 1
            t += 1.0 * dist[-1] / mid
            if t <= hour:
                r = mid
            else:
                l = mid + 1
        return l


Uriel 2023-07-26 17:22 鍙戣〃璇勮
]]>
[LeetCode]852. Peak Index in a Mountain Array (Medium) Python-2023.07.25http://www.shnenglu.com/Uriel/articles/229989.htmlUrielUrielTue, 25 Jul 2023 10:35:00 GMThttp://www.shnenglu.com/Uriel/articles/229989.htmlhttp://www.shnenglu.com/Uriel/comments/229989.htmlhttp://www.shnenglu.com/Uriel/articles/229989.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229989.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229989.html

 1 #852
 2 #Runtime: 537 ms (Beats 55.42%)
 3 #Memory: 25.7 MB (Beats 90.39%)
 4 
 5 class Solution(object):
 6     def peakIndexInMountainArray(self, arr):
 7         """
 8         :type arr: List[int]
 9         :rtype: int
10         """
11         l, r = 0, len(arr) - 1
12         while l < r:
13             mid = (l + r) // 2
14             if arr[mid] < arr[mid + 1]:
15                 l = mid + 1
16             else:
17                 r = mid
18         return r


Uriel 2023-07-25 18:35 鍙戣〃璇勮
]]>
[LeetCode]50. Pow(x, n) (Medium) Python-2023.07.24http://www.shnenglu.com/Uriel/articles/229986.htmlUrielUrielMon, 24 Jul 2023 11:38:00 GMThttp://www.shnenglu.com/Uriel/articles/229986.htmlhttp://www.shnenglu.com/Uriel/comments/229986.htmlhttp://www.shnenglu.com/Uriel/articles/229986.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229986.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229986.html


 1 #50
 2 #Runtime: 14 ms (Beats 83.42%)
 3 #Memory: 13.2 MB (Beats 69.77%)
 4 
 5 class Solution(object):
 6     def myPow(self, x, n):
 7         """
 8         :type x: float
 9         :type n: int
10         :rtype: float
11         """
12 
13         def cal(x, n):
14             if n == 0:
15                 return 1.0
16             if n % 2:
17                 return cal(x * x, n // 2) * x
18             else:
19                 return cal(x * x, n // 2)
20         
21         if n < 0:
22             return 1.0 / cal(x, -n)
23         return cal(x, n)


Uriel 2023-07-24 19:38 鍙戣〃璇勮
]]>
[LeetCode]1751. Maximum Number of Events That Can Be Attended II (Hard) Python-2023.07.15http://www.shnenglu.com/Uriel/articles/229976.htmlUrielUrielSat, 15 Jul 2023 10:04:00 GMThttp://www.shnenglu.com/Uriel/articles/229976.htmlhttp://www.shnenglu.com/Uriel/comments/229976.htmlhttp://www.shnenglu.com/Uriel/articles/229976.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229976.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229976.html

 1 #1751
 2 #Runtime: 999 ms (Beats 60%)
 3 #Memory: 133.9 MB (Beats 20%)
 4 
 5 class Solution(object):
 6     def maxValue(self, events, k):
 7         """
 8         :type events: List[List[int]]
 9         :type k: int
10         :rtype: int
11         """
12         n = len(events)
13         events.sort(key=lambda x: x[0])
14         dp = [[-1] * n for _ in range(k + 1)]
15 
16         def DFS(idx, cnt):
17             if cnt == 0 or idx == len(events):
18                 return 0
19             if dp[cnt][idx] != -1:
20                 return dp[cnt][idx]
21             dp[cnt][idx] = max(DFS(idx + 1, cnt), events[idx][2] + DFS(bsearch(events[idx][1]), cnt - 1))
22             return dp[cnt][idx]
23 
24         def bsearch(x):
25             l, r = 0, len(events) - 1
26             while l <= r:
27                 mid = (l + r + 1) // 2
28                 if events[mid][0] <= x:
29                     l = mid + 1
30                 else:
31                     r = mid - 1
32             return l
33 
34         return DFS(0, k)


Uriel 2023-07-15 18:04 鍙戣〃璇勮
]]>
[LeetCode]209. Minimum Size Subarray Sum (Medium) Python-2023.07.06http://www.shnenglu.com/Uriel/articles/229960.htmlUrielUrielThu, 06 Jul 2023 16:27:00 GMThttp://www.shnenglu.com/Uriel/articles/229960.htmlhttp://www.shnenglu.com/Uriel/comments/229960.htmlhttp://www.shnenglu.com/Uriel/articles/229960.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229960.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229960.html

 1 #209
 2 #Runtime: 241 ms (Beats 10.50%)
 3 #Memory: 24.1 MB (Beats 5.56%)
 4 
 5 class Solution(object):
 6     def minSubArrayLen(self, target, nums):
 7         """
 8         :type target: int
 9         :type nums: List[int]
10         :rtype: int
11         """
12         pre_sum = [0]
13         for i in range(0, len(nums)):
14             pre_sum.append(pre_sum[-1] + nums[i])
15         if pre_sum[-1] < target:
16             return 0
17         l, r = 1, len(pre_sum)
18         while l < r:
19             mid = (l + r) // 2
20             ok = False
21             for i in range(mid, len(pre_sum)):
22                 if pre_sum[i] - pre_sum[i - mid] >= target:
23                     ok = True
24                     break
25             if ok:
26                 r = mid
27             else:
28                 l = mid + 1
29         return r


Uriel 2023-07-07 00:27 鍙戣〃璇勮
]]>
[LeetCode]1970. Last Day Where You Can Still Cross (Hard) Python-2023.06.30http://www.shnenglu.com/Uriel/articles/229953.htmlUrielUrielSat, 01 Jul 2023 06:41:00 GMThttp://www.shnenglu.com/Uriel/articles/229953.htmlhttp://www.shnenglu.com/Uriel/comments/229953.htmlhttp://www.shnenglu.com/Uriel/articles/229953.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229953.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229953.html浜屽垎絳旀+DFS紜鏄惁鍙揪


 1 #1970
 2 #Runtime: 3361 ms (Beats 85.71%)
 3 #Memory: 39.9 MB (Beats 14.29%)
 4 
 5 class Solution(object):
 6     def latestDayToCross(self, row, col, cells):
 7         """
 8         :type row: int
 9         :type col: int
10         :type cells: List[List[int]]
11         :rtype: int
12         """
13         d = [[0, 1], [0, -1], [-1, 0], [1, 0]]
14         def DFS(grid, r, c):
15             if 0 <= r < row and 0 <= c < col and grid[r][c] == 0:
16                 if r == row - 1:
17                     return True
18                 grid[r][c] = -1
19                 for x in d:
20                     tr = r + x[0]
21                     tc = c + x[1]
22                     if DFS(grid, tr, tc):
23                         return True
24             return False
25 
26         def ok(x):
27             grid = [[0] * col for _ in range(row)]
28             for i in range(x):
29                 grid[cells[i][0] - 1][cells[i][1] - 1] = 1
30             for i in range(col):
31                 if grid[0][i] == 0 and DFS(grid, 0, i):
32                     return True
33             return False
34 
35         l = 1
36         r = len(cells)
37         while l < r:           
38             mid = (l + r) // 2 + (l + r) % 2
39             if ok(mid):
40                 l = mid
41             else:
42                 r = mid - 1
43         return l
44 


Uriel 2023-07-01 14:41 鍙戣〃璇勮
]]>
[LeetCode]2448. Minimum Cost to Make Array Equal (Hard) Python-2023.06.21http://www.shnenglu.com/Uriel/articles/229939.htmlUrielUrielWed, 21 Jun 2023 14:08:00 GMThttp://www.shnenglu.com/Uriel/articles/229939.htmlhttp://www.shnenglu.com/Uriel/comments/229939.htmlhttp://www.shnenglu.com/Uriel/articles/229939.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229939.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229939.html鍙傝冧簡Discussion -> https://leetcode.com/problems/minimum-cost-to-make-array-equal/solutions/3663660/binary-search-video-java-c-python/


 1 #2448
 2 #Runtime: 748 ms (Beats 42.86%)
 3 #Memory: 24.8 MB (Beats 71.43%)
 4 
 5 class Solution(object):
 6     def minCost(self, nums, cost):
 7         """
 8         :type nums: List[int]
 9         :type cost: List[int]
10         :rtype: int
11         """
12         def cal(m):
13             t = 0
14             for i in range(len(nums)):
15                 t += abs(nums[i] - m) * cost[i]
16             return t
17 
18         l, r = nums[0], nums[0]
19         for i in nums:
20             l = min(l, i)
21             r = max(r, i)
22         print(l)
23         print(r)
24         ans = 0
25         while l < r:
26             mid = (l + r) // 2
27             cost1 = cal(mid)
28             cost2 = cal(mid + 1)
29             if cost1 > cost2:
30                 l = mid + 1
31                 ans = cost2
32             else:
33                 r = mid
34                 ans = cost1
35         return ans


Uriel 2023-06-21 22:08 鍙戣〃璇勮
]]>
[LeetCode]1187. Make Array Strictly Increasing (Hard) Python-2023.06.17http://www.shnenglu.com/Uriel/articles/229932.htmlUrielUrielSat, 17 Jun 2023 10:40:00 GMThttp://www.shnenglu.com/Uriel/articles/229932.htmlhttp://www.shnenglu.com/Uriel/comments/229932.htmlhttp://www.shnenglu.com/Uriel/articles/229932.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229932.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229932.html鍙傝冧簡Discussion-> https://leetcode.com/problems/make-array-strictly-increasing/solutions/2290360/python-detailed-explanation-intution-explained-dp-clear-and-concise/


 1 #1187
 2 #Runtime: 4197 ms (Beats 25%)
 3 #Memory: 193.2 MB (Beats 25%)
 4 
 5 class Solution(object):
 6     def makeArrayIncreasing(self, arr1, arr2):
 7         """
 8         :type arr1: List[int]
 9         :type arr2: List[int]
10         :rtype: int
11         """
12         n1 = len(arr1)
13         n2 = len(arr2)
14         arr2.sort()
15         dp = {}
16 
17         def cal(i, j, pre):
18             if i == n1:
19                 return 0
20             if (i, j, pre) in dp:
21                 return dp[(i, j, pre)]
22             k = bisect.bisect_right(arr2[j:], pre) + j
23             if k == n2:
24                 ans = float('inf')
25             else:
26                 ans = cal(i + 1, k + 1, arr2[k]) + 1
27             if arr1[i] > pre:
28                 ans = min(ans, cal(i + 1, j, arr1[i]))
29             dp[(i, j, pre)] = ans
30             return ans
31             
32         ans = cal(0, 0, -float('inf'))
33         return ans if ans != float('inf'else -1


Uriel 2023-06-17 18:40 鍙戣〃璇勮
]]>
[LeetCode]1146. Snapshot Array (Medium) Python-2023.06.11http://www.shnenglu.com/Uriel/articles/229925.htmlUrielUrielSun, 11 Jun 2023 10:12:00 GMThttp://www.shnenglu.com/Uriel/articles/229925.htmlhttp://www.shnenglu.com/Uriel/comments/229925.htmlhttp://www.shnenglu.com/Uriel/articles/229925.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229925.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229925.html鍙傝冧簡Discussion鎬濊礬->https://leetcode.com/problems/snapshot-array/solutions/3623538/simple-java-c-python-easy-to-understand/


 1 #1146
 2 #Runtime: 706 ms (Beats 30.51%)
 3 #Memory: 45.6 MB (Beats 66.10%)
 4 
 5 class SnapshotArray(object):
 6 
 7     def __init__(self, length):
 8         """
 9         :type length: int
10         """
11         self.cur_arr = [0] * length
12         self.his_arr = [[0] for _ in range(length)]
13         self.modifed_idx_list = set()
14         self.snap_id = 0
15         self.snap_id_arr = [[-1] for _ in range(length)]
16         
17 
18     def set(self, index, val):
19         """
20         :type index: int
21         :type val: int
22         :rtype: None
23         """
24         if self.his_arr[index][-1] == val:
25             if index in self.modifed_idx_list:
26                 self.modifed_idx_list.remove(index)
27             return
28         self.cur_arr[index] = val
29         if index not in self.modifed_idx_list:
30             self.modifed_idx_list.add(index)
31         
32 
33     def snap(self):
34         """
35         :rtype: int
36         """
37         for i in self.modifed_idx_list:
38             self.snap_id_arr[i].append(self.snap_id)
39             self.his_arr[i].append(self.cur_arr[i])
40         self.modifed_idx_list.clear()
41         self.snap_id += 1
42         return self.snap_id - 1
43 
44 
45     def get(self, index, snap_id):
46         """
47         :type index: int
48         :type snap_id: int
49         :rtype: int
50         """
51         arr = self.snap_id_arr[index]
52         l, r = 1, len(arr)
53         while l < r:
54             mid = (l + r) // 2
55             if arr[mid] <= snap_id:
56                 l = mid + 1
57             else:
58                 r = mid
59         return self.his_arr[index][l - 1]
60         
61 
62 
63 # Your SnapshotArray object will be instantiated and called as such:
64 # obj = SnapshotArray(length)
65 # obj.set(index,val)
66 # param_2 = obj.snap()
67 # param_3 = obj.get(index,snap_id)


Uriel 2023-06-11 18:12 鍙戣〃璇勮
]]>
[LeetCode]744. Find Smallest Letter Greater Than Target (Easy) Python-2023.06.09http://www.shnenglu.com/Uriel/articles/229924.htmlUrielUrielFri, 09 Jun 2023 07:28:00 GMThttp://www.shnenglu.com/Uriel/articles/229924.htmlhttp://www.shnenglu.com/Uriel/comments/229924.htmlhttp://www.shnenglu.com/Uriel/articles/229924.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229924.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229924.html

鎵嬪啓浜屽垎錛?br />

 1 #744
 2 #Runtime: 83 ms (Beats 49.15%)
 3 #Memory: 15.2 MB (Beats 72.73%)
 4 
 5 class Solution(object):
 6     def nextGreatestLetter(self, letters, target):
 7         """
 8         :type letters: List[str]
 9         :type target: str
10         :rtype: str
11         """
12         def b_search(ch):
13             l = 0
14             r = len(letters) - 1
15             while l < r:
16                 mid = (l + r) // 2
17                 if letters[mid] <= target:
18                     l = mid + 1
19                 else:
20                     r = mid
21             return l
22         idx = b_search(target)
23 
24         if letters[idx] > target:
25             return letters[idx]
26         return letters[0]

鐢╬ython鑷甫浜屽垎鍑芥暟錛?br />

 1 #744
 2 #Runtime: 80 ms (Beats 66.76%)
 3 #Memory: 15.2 MB (Beats 93.75%)
 4 
 5 class Solution(object):
 6     def nextGreatestLetter(self, letters, target):
 7         """
 8         :type letters: List[str]
 9         :type target: str
10         :rtype: str
11         """
12         idx = bisect.bisect_right(letters, target)
13 
14         if idx < len(letters):
15             return letters[idx]
16         return letters[0]


Uriel 2023-06-09 15:28 鍙戣〃璇勮
]]>
[LeetCode]1351. Count Negative Numbers in a Sorted Matrix (Easy) Python-2023.06.08http://www.shnenglu.com/Uriel/articles/229923.htmlUrielUrielThu, 08 Jun 2023 05:31:00 GMThttp://www.shnenglu.com/Uriel/articles/229923.htmlhttp://www.shnenglu.com/Uriel/comments/229923.htmlhttp://www.shnenglu.com/Uriel/articles/229923.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229923.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229923.html
鎬濊礬涓錛氳涓父鏍囷紝璁板綍褰撳墠琛岄潪璐熸暟鏈夊嚑涓?br />

 1 #1351
 2 #Runtime: 95 ms (Beats 68.82%)
 3 #Memory: 14.5 MB (Beats 73.12%)
 4 
 5 class Solution(object):
 6     def countNegatives(self, grid):
 7         """
 8         :type grid: List[List[int]]
 9         :rtype: int
10         """
11         pos = len(grid[0])
12         ans = 0
13         for i in range(len(grid)):
14             for j in range(pos):
15                 if grid[i][j] < 0:
16                     pos = j
17                     break
18             ans += len(grid[0]) - pos
19         return ans


鎬濊礬浜岋細姣忚浜屽垎姹備綅緗紙澶嶆潅搴︽洿浣庯紝浣嗚繖棰樻暟鎹及璁″緢姘達紝鎵浠ュ弽鑰屾參錛?br />

 1 #1351
 2 #Runtime: 102 ms (Beats 25.81%)
 3 #Memory: 14.5 MB (Beats 40.86%)
 4 
 5 class Solution(object):
 6     def countNegatives(self, grid):
 7         """
 8         :type grid: List[List[int]]
 9         :rtype: int
10         """
11         def b_search(i):
12             l = 0
13             r = len(grid[i])
14             while l < r:
15                 mid = (l + r) // 2
16                 if grid[i][mid] >= 0:
17                     l = mid + 1
18                 else:
19                     r = mid
20             return l
21             
22         ans = 0
23         for i in range(len(grid)):
24             ans += len(grid[0]) - b_search(i)
25         return ans


Uriel 2023-06-08 13:31 鍙戣〃璇勮
]]>
[LeetCode]1964. Find the Longest Valid Obstacle Course at Each Position (Hard) Python-2023.05.07http://www.shnenglu.com/Uriel/articles/229869.htmlUrielUrielSun, 07 May 2023 11:34:00 GMThttp://www.shnenglu.com/Uriel/articles/229869.htmlhttp://www.shnenglu.com/Uriel/comments/229869.htmlhttp://www.shnenglu.com/Uriel/articles/229869.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229869.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229869.html緇存姢涓涓崟璋冧笉闄嶇殑stk錛屽浜庢瘡涓浣嶇殑鏁板瓧錛屼簩鍒唖tk錛岃嫢璇ユ暟瀛楁瘮鎵鏈塻tk閲岀殑鏁伴兘澶э紝鍒檃ppend鍒版湯灝撅紝鍚﹀垯鏇挎崲stk閲屼綅浜庤鏁板彸杈圭殑涓涓暟錛堝洜涓鴻姹傚崟璋冧笉闄嶈屼笉鏄崟璋冨錛夛紝浜屽垎鐩存帴鐢╬ython鐨刡isect_right


 1 #1964
 2 #Runtime: 1442 ms (Beats 33.33%)
 3 #Memory: 32 MB (Beats 100%)
 4 
 5 class Solution(object):
 6     def longestObstacleCourseAtEachPosition(self, obstacles):
 7         """
 8         :type obstacles: List[int]
 9         :rtype: List[int]
10         """
11         stk, ans = [], []
12         for i in obstacles:
13             j = bisect_right(stk, i)
14             if j == len(stk):
15                 stk.append(i)
16             else:
17                 stk[j] = i
18             ans.append(j + 1)
19         return ans


Uriel 2023-05-07 19:34 鍙戣〃璇勮
]]>
[LeetCode]2300. Successful Pairs of Spells and Potions (Medium) Python-2023.04.02http://www.shnenglu.com/Uriel/articles/229799.htmlUrielUrielSun, 02 Apr 2023 09:26:00 GMThttp://www.shnenglu.com/Uriel/articles/229799.htmlhttp://www.shnenglu.com/Uriel/comments/229799.htmlhttp://www.shnenglu.com/Uriel/articles/229799.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229799.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229799.html鍏堝potions鎸変粠灝忓埌澶ф帓搴忥紝鐒跺悗瀵逛簬spells閲岄潰姣忎釜鏁幫紝浜屽垎絎竴涓鍚堝ぇ浜庣瓑浜巗uccess鐨勬暟鐨勪綅緗?br />娉ㄦ剰杈圭晫鍊?br />

 1 #2300
 2 #Runtime: 1082 ms (Beats 100%)
 3 #Memory: 37.5 MB (Beats 38.71%)
 4 
 5 class Solution(object):
 6     def successfulPairs(self, spells, potions, success):
 7         """
 8         :type spells: List[int]
 9         :type potions: List[int]
10         :type success: int
11         :rtype: List[int]
12         """
13         potions.sort()
14         ans = []
15         for sp in spells:
16             ans.append(len(potions) - bisect_left(potions, ceil(1.0 * success / sp)))
17         return ans


Uriel 2023-04-02 17:26 鍙戣〃璇勮
]]>
[LeetCode]704. Binary Search (Easy) Python-2023.04.01http://www.shnenglu.com/Uriel/articles/229796.htmlUrielUrielSat, 01 Apr 2023 08:20:00 GMThttp://www.shnenglu.com/Uriel/articles/229796.htmlhttp://www.shnenglu.com/Uriel/comments/229796.htmlhttp://www.shnenglu.com/Uriel/articles/229796.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229796.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229796.html

 1 #704
 2 #Runtime: 178 ms (Beats 94.20%)
 3 #Memory: 14.8 MB (Beats 31.81%)
 4 
 5 class Solution(object):
 6     def search(self, nums, target):
 7         """
 8         :type nums: List[int]
 9         :type target: int
10         :rtype: int
11         """
12         l = 0
13         r = len(nums)
14         while l < r:
15             mid = (l + r) // 2
16             if nums[mid] == target:
17                 return mid
18             if nums[mid] < target:
19                 l = mid + 1
20             else:
21                 r = mid
22         return -1


Uriel 2023-04-01 16:20 鍙戣〃璇勮
]]>
[LeetCode]875. Koko Eating Bananas (Medium) Python-2023.03.08http://www.shnenglu.com/Uriel/articles/229731.htmlUrielUrielThu, 09 Mar 2023 13:53:00 GMThttp://www.shnenglu.com/Uriel/articles/229731.htmlhttp://www.shnenglu.com/Uriel/comments/229731.htmlhttp://www.shnenglu.com/Uriel/articles/229731.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229731.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229731.html
 1 #875
 2 #Runtime: 379 ms (Beats 80.86%)
 3 #Memory: 14.7 MB (Beats 56.32%)
 4 
 5 class Solution(object):
 6     def minEatingSpeed(self, piles, h):
 7         """
 8         :type piles: List[int]
 9         :type h: int
10         :rtype: int
11         """
12         l = 1
13         r = max(piles)
14         while l < r:
15             mid = (l + r) // 2
16             t = 0
17             for i in piles:
18                 t += ceil(i*1.0 / mid)
19             if t > h:
20                 l = mid + 1
21             else:
22                 r = mid
23             
24         return l


Uriel 2023-03-09 21:53 鍙戣〃璇勮
]]>
[LeetCode]2187. Minimum Time to Complete Trips (Medium) Python-2023.03.07http://www.shnenglu.com/Uriel/articles/229724.htmlUrielUrielWed, 08 Mar 2023 11:19:00 GMThttp://www.shnenglu.com/Uriel/articles/229724.htmlhttp://www.shnenglu.com/Uriel/comments/229724.htmlhttp://www.shnenglu.com/Uriel/articles/229724.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229724.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229724.html鐩存帴浜屽垎緇撴灉


 1 #2187
 2 #Runtime: 2092 ms (Beats 65.38%)
 3 #Memory: 24.8 MB (Beats 46.15%)
 4 
 5 class Solution(object):
 6     def minimumTime(self, time, totalTrips):
 7         """
 8         :type time: List[int]
 9         :type totalTrips: int
10         :rtype: int
11         """
12         l = 0
13         r = totalTrips * time[0]
14         while l < r:
15             mid = (l + r) // 2
16             tr = 0
17             for i in time:
18                 tr += mid // i
19             if tr < totalTrips:
20                 l = mid + 1
21             else:
22                 r = mid
23         return l


Uriel 2023-03-08 19:19 鍙戣〃璇勮
]]>
[LeetCode]1011. Capacity To Ship Packages Within D Days (Medium) Python-2023.02.22http://www.shnenglu.com/Uriel/articles/229694.htmlUrielUrielWed, 22 Feb 2023 14:28:00 GMThttp://www.shnenglu.com/Uriel/articles/229694.htmlhttp://www.shnenglu.com/Uriel/comments/229694.htmlhttp://www.shnenglu.com/Uriel/articles/229694.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229694.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229694.html
鍥犱負璐х墿鐨勪紶杈撴槸紜畾欏哄簭鐨勬墍浠ユ瘮杈冪畝鍗曪紝浜屽垎絳旀錛屾瘡嬈″垽鏂槸鍚﹁兘鍦╠ays澶╁唴榪愯緭瀹屽嵆鍙紝浜屽垎鐨勪笅闄愭槸weights鐨勬渶澶у鹼紝涓婇檺鏄痺eights涔嬪拰


 1 #1011
 2 #Runtime: 400 ms (Beats 51.78%)
 3 #Memory: 15.4 MB (Beats 32.99%)
 4 
 5 class Solution(object):
 6     def shipWithinDays(self, weights, days):
 7         """
 8         :type weights: List[int]
 9         :type days: int
10         :rtype: int
11         """
12         l = max(weights)
13         r = sum(weights)
14 
15         def check(cap):
16             t = 1
17             c = 0
18             for wi in weights:
19                 if c + wi > cap:
20                     t += 1
21                     c = 0
22                 c += wi
23             if t <= days:
24                 return True
25             return False
26 
27 
28         while l < r:
29             mid = (l + r) // 2
30             if check(mid):
31                 r = mid
32             else:
33                 l = mid + 1
34         return r


Uriel 2023-02-22 22:28 鍙戣〃璇勮
]]>
[LeetCode]540. Single Element in a Sorted Array (Medium) Python-2023.02.21http://www.shnenglu.com/Uriel/articles/229692.htmlUrielUrielTue, 21 Feb 2023 09:22:00 GMThttp://www.shnenglu.com/Uriel/articles/229692.htmlhttp://www.shnenglu.com/Uriel/comments/229692.htmlhttp://www.shnenglu.com/Uriel/articles/229692.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229692.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229692.html
 1 #540
 2 #Runtime: 134 ms (Beats 72.61%)
 3 #Memory: 20.6 MB (Beats 26.56%)
 4 
 5 class Solution(object):
 6     def singleNonDuplicate(self, nums):
 7         """
 8         :type nums: List[int]
 9         :rtype: int
10         """
11         l = 0
12         r = len(nums) - 1
13         while l < r:
14             mid = (l + r) // 2
15             if mid % 2:
16                 mid -= 1
17             if nums[mid] == nums[mid + 1]:
18                 l = mid + 2
19             else:
20                 r = mid
21         return nums[l]


Uriel 2023-02-21 17:22 鍙戣〃璇勮
]]>
[LeetCode]35. Search Insert Position (Easy) Python-2023.02.20http://www.shnenglu.com/Uriel/articles/229690.htmlUrielUrielMon, 20 Feb 2023 12:11:00 GMThttp://www.shnenglu.com/Uriel/articles/229690.htmlhttp://www.shnenglu.com/Uriel/comments/229690.htmlhttp://www.shnenglu.com/Uriel/articles/229690.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229690.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229690.html
璁$畻鎻掑叆涓涓柊鏁板埌宸茬粡鎸夊崌搴忔帓搴忕殑鍒楄〃涓紝榪斿洖鎻掑叆浣嶇疆錛岀洿鎺ヨ皟鐢╬ython鐨刡isect_left()鎴栬呮墜鍐欎釜浜屽垎

Python bisect搴撳嚱鏁扮増錛?br />
 1 #35
 2 #Runtime: 33 ms (Beats 67.74%)
 3 #Memory: 14.2 MB (Beats 31.43%)
 4 
 5 class Solution(object):
 6     def searchInsert(self, nums, target):
 7         """
 8         :type nums: List[int]
 9         :type target: int
10         :rtype: int
11         """
12         return bisect.bisect_left(nums, target)

鎵嬪啓浜屽垎錛?br />
 1 #35
 2 #Runtime: 32 ms (Beats 73.34%)
 3 #Memory: 14.2 MB (Beats 60.52%)
 4 
 5 class Solution(object):
 6     def searchInsert(self, nums, target):
 7         """
 8         :type nums: List[int]
 9         :type target: int
10         :rtype: int
11         """
12         for i in range(0, len(nums)):
13             if nums[i] == target:
14                 return i
15             if nums[i] > target:
16                 return i
17         return len(nums)


Uriel 2023-02-20 20:11 鍙戣〃璇勮
]]>
[LeetCode]2389. Longest Subsequence With Limited Sum (Easy) Python-2022.12.25http://www.shnenglu.com/Uriel/articles/229590.htmlUrielUrielSun, 25 Dec 2022 11:08:00 GMThttp://www.shnenglu.com/Uriel/articles/229590.htmlhttp://www.shnenglu.com/Uriel/comments/229590.htmlhttp://www.shnenglu.com/Uriel/articles/229590.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229590.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229590.html緇欏嚭涓鍒楁暟nums[i]浠ュ強涓浜泀uery q[j]錛岃緭鍑篴ns[j]琛ㄧず浠巒ums[i]涓彲浠ユ渶澶氶夋嫨鍑犱釜鏁頒嬌寰楀姞鍜屼笉瓚呰繃q[j]銆?/div>
浠旂粏鎯蟲兂灝卞彂鐜拌櫧鐒墮鐩腑璇磏ums欏哄簭涓嶅彲浜ゆ崲錛屼絾鍥犱負鍙互闅忔剰鍙栦竴浜涜煩榪囦竴浜涳紝鎵浠ュ叾瀹為『搴忓茍涓嶅獎鍝嶏紝鎵浠ュ厛瀵筺ums鎺掑簭錛岀劧鍚庨澶勭悊prefix sum錛屼箣鍚庡浜庢瘡涓煡璇[j]錛屼簩鍒唒refix sum錛岀湅鏈澶氬彲浠ュ彇澶氬皯涓暟錛岀敤python鑷甫鐨勪簩鍒嗗嚱鏁頒緷鏃ф洿蹇竴浜?br />
鐢╬ython鑷甫鍑芥暟

 1 #2389
 2 #Runtime: 86 ms (Beats 97.67%)
 3 #Memory: 13.9 MB (Beats 29.7%)
 4 
 5 class Solution(object):
 6     def answerQueries(self, nums, queries):
 7         """
 8         :type nums: List[int]
 9         :type queries: List[int]
10         :rtype: List[int]
11         """
12         nums.sort()
13         sums = [nums[0]]
14         for i in range(1, len(nums)):
15             sums.append(sums[-1] + nums[i])
16         ans = []
17         for q in queries:
18             ans.append(bisect_right(sums, q))
19         return ans


鎵嬪啓浜屽垎錛?br />
 1 #2389
 2 #Runtime: 93 ms (Beats 95.35%)
 3 #Memory: 13.8 MB (Beats 56.98%)
 4 
 5 class Solution(object):
 6     def answerQueries(self, nums, queries):
 7         """
 8         :type nums: List[int]
 9         :type queries: List[int]
10         :rtype: List[int]
11         """
12         nums.sort()
13         sums = [nums[0]]
14         for i in range(1, len(nums)):
15             sums.append(sums[-1] + nums[i])
16         ans = []
17         for q in queries:
18             l = 0
19             r = len(nums)
20             while l < r:
21                 mid = (l + r) // 2 
22                 if sums[mid] > q:
23                     r = mid
24                 else:
25                     l = mid + 1
26             ans.append(l)
27         return ans


Uriel 2022-12-25 19:08 鍙戣〃璇勮
]]>
[LeetCode]374. Guess Number Higher or Lower (Easy) Python-2022.11.16http://www.shnenglu.com/Uriel/articles/229520.htmlUrielUrielWed, 16 Nov 2022 06:04:00 GMThttp://www.shnenglu.com/Uriel/articles/229520.htmlhttp://www.shnenglu.com/Uriel/comments/229520.htmlhttp://www.shnenglu.com/Uriel/articles/229520.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229520.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229520.html
 1 #374
 2 #Runtime: 42 ms
 3 #Memory Usage: 13.3 MB
 4 
 5 # The guess API is already defined for you.
 6 # @param num, your guess
 7 # @return -1 if num is higher than the picked number
 8 #          1 if num is lower than the picked number
 9 #          otherwise return 0
10 # def guess(num):
11 
12 class Solution(object):
13     def guessNumber(self, n):
14         """
15         :type n: int
16         :rtype: int
17         """
18         l = 1
19         r = n
20         while l < r:
21             mid = (l + r) // 2
22             if guess(mid) == 1:
23                 l = mid + 1
24             elif guess(mid) == 0:
25                 return mid
26             else:
27                 r = mid - 1
28         return l


Uriel 2022-11-16 14:04 鍙戣〃璇勮
]]>
[LeetCode]222. Count Complete Tree Nodes (Medium) Python-2022.11.15http://www.shnenglu.com/Uriel/articles/229519.htmlUrielUrielTue, 15 Nov 2022 10:58:00 GMThttp://www.shnenglu.com/Uriel/articles/229519.htmlhttp://www.shnenglu.com/Uriel/comments/229519.htmlhttp://www.shnenglu.com/Uriel/articles/229519.html#Feedback0http://www.shnenglu.com/Uriel/comments/commentRss/229519.htmlhttp://www.shnenglu.com/Uriel/services/trackbacks/229519.html
鏂規硶涓錛氬厛DFS錛屼笉鏂蛋宸﹀瓙鏍戠殑璺緞錛岀畻鍑轟簩鍙夋爲灞傛暟max_depth錛岄偅涔堟渶鍚庝竴灞傝妭鐐圭殑鏁伴噺涓篬1, 2^(max_depth-1)]錛岀洿鎺ヤ簩鍒嗚繖涓寖鍥達紝鐒跺悗綆楀嚭鏈鍚庝竴涓彾瀛愮粨鐐硅惤鍦ㄥ摢閲岋紝鐞嗚澶嶆潅搴(logn)*O(logn)

 1 #222
 2 #Runtime: 156 ms
 3 #Memory Usage: 29.2 MB
 4 
 5 # Definition for a binary tree node.
 6 # class TreeNode(object):
 7 #     def __init__(self, val=0, left=None, right=None):
 8 #         self.val = val
 9 #         self.left = left
10 #         self.right = right
11 class Solution(object):
12     def binarySearch(self, root, depth, mid, l, r):
13         if depth == self.max_depth - 1: 
14             if root:
15                 return True
16             return False
17         if mid <= (l + r)//2:
18             return self.binarySearch(root.left, depth + 1, mid, l, (l + r)//2)
19         else:
20             return self.binarySearch(root.right, depth + 1, mid, (l + r)//2, r) 
21             
22     def countNodes(self, root):
23         """
24         :type root: TreeNode
25         :rtype: int
26         """
27         self.max_depth = 0
28         rt = root
29         while rt:
30             rt = rt.left
31             self.max_depth = self.max_depth + 1
32         if not self.max_depth:
33             return 0
34         l = 1
35         r = 2**(self.max_depth - 1)
36         while l < r:
37             mid = (l + r) // 2 + (l + r) % 2
38             if self.binarySearch(root, 0, mid, 1, 2**(self.max_depth - 1)):
39                 l = mid
40             else:
41                 r = mid - 1
42         return l + 2**(self.max_depth - 1) - 1

鏂規硶浜岋細鐩存帴涓嶆柇浜屽垎鍦伴掑綊鎵懼乏鍙沖瓙鏍戯紝鐩村埌閬囧埌鏌愪釜婊′簩鍙夋爲鑺傜偣錛岀劧鍚巗um(宸﹀瓙鏍戠殑鎼滅儲緇撴灉)+sum(鍙沖瓙鏍戠殑鎼滅儲緇撴灉)+1錛堟牴緇撶偣錛夛紝鐞嗚澶嶆潅搴(logn)*O(logn)

 1 #222
 2 #Runtime: 137 ms
 3 #Memory Usage: 29.2 MB
 4 
 5 # Definition for a binary tree node.
 6 # class TreeNode(object):
 7 #     def __init__(self, val=0, left=None, right=None):
 8 #         self.val = val
 9 #         self.left = left
10 #         self.right = right
11 class Solution(object):
12     def DFS(self, root, fg):
13         if not root:
14             return 1
15         if fg == 0:
16             return self.DFS(root.left, 0) + 1
17         return self.DFS(root.right, 1) + 1
18             
19     def countNodes(self, root):
20         """
21         :type root: TreeNode
22         :rtype: int
23         """
24         if not root:
25             return 0
26         depth_l = self.DFS(root.left, 0)
27         depth_r = self.DFS(root.right, 1)
28         if depth_l == depth_r:
29             return 2**depth_l - 1
30         return self.countNodes(root.left) + self.countNodes(root.right) + 1

鏂規硶涓夛細鐩存帴DFS鏁存5鏍戞眰鑺傜偣鏁伴噺錛屽鏉傚害O(n)錛屾病鎯沖埌榪欎釜鏂規硶鍙嶈屾渶蹇?..

 1 #222
 2 #Runtime: 87 ms
 3 #Memory Usage: 29.4 MB
 4 
 5 # Definition for a binary tree node.
 6 # class TreeNode(object):
 7 #     def __init__(self, val=0, left=None, right=None):
 8 #         self.val = val
 9 #         self.left = left
10 #         self.right = right
11 class Solution(object):
12     def DFS(self, root):
13         if not root:
14             return
15         self.ans += 1
16         self.DFS(root.left)
17         self.DFS(root.right)
18             
19     def countNodes(self, root):
20         """
21         :type root: TreeNode
22         :rtype: int
23         """
24         self.ans = 0
25         self.DFS(root)
26         return self.ans


Uriel 2022-11-15 18:58 鍙戣〃璇勮
]]>
欧美一区二区三区久久综| 久久国产亚洲精品麻豆| 青青热久久国产久精品 | 久久99久国产麻精品66| 久久精品国产亚洲av麻豆色欲| 国产精品久久久久影院色| 久久亚洲2019中文字幕| 91精品国产91久久久久福利| 久久久久国产一级毛片高清板| 狠狠精品久久久无码中文字幕| 久久99精品国产99久久| 久久久久精品国产亚洲AV无码| 97精品国产97久久久久久免费| 偷窥少妇久久久久久久久| 岛国搬运www久久| 欧美噜噜久久久XXX| 日韩欧美亚洲综合久久影院Ds| 99久久免费国产精精品| 少妇久久久久久久久久| 色老头网站久久网| 久久国产精品国语对白| 99久久超碰中文字幕伊人| 久久婷婷五月综合97色直播| 国产无套内射久久久国产| 国产精品美女久久久久| 伊人久久久AV老熟妇色| 国产香蕉久久精品综合网| 久久精品国产亚洲av瑜伽| 国产午夜久久影院| 国产精品久久久久久久久鸭| 久久久久无码精品国产| 久久亚洲精品中文字幕| 亚洲色欲久久久综合网东京热| 久久e热在这里只有国产中文精品99| 99久久免费国产特黄| 久久精品亚洲精品国产色婷 | 色婷婷噜噜久久国产精品12p| 久久夜色tv网站| 久久激情亚洲精品无码?V| 久久精品国产福利国产琪琪| 精品国产婷婷久久久|