锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
2
3 class Solution(object):
4 def sortedSquares(self, nums):
5 """
6 :type nums: List[int]
7 :rtype: List[int]
8 """
9 l = 0
10 r = len(nums) - 1
11 ans = []
12 while l <= r:
13 if nums[l] * nums[l] > nums[r] * nums[r]:
14 ans.append(nums[l] * nums[l])
15 l += 1
16 else:
17 ans.append(nums[r] * nums[r])
18 r -= 1
19 return ans[::-1]
]]>
2 #Runtime: 516 ms (Beats 18.92%)
3 #Memory: 23.6 MB (Beats 7.21%)
4
5 class Solution(object):
6 def maxCoins(self, piles):
7 """
8 :type piles: List[int]
9 :rtype: int
10 """
11 piles.sort()
12 q = deque(piles)
13 ans = 0
14 while q:
15 q.popleft()
16 q.pop()
17 ans += q[-1]
18 q.pop()
19 return ans
]]>
2 #Runtime: 875 ms (Beats 72.22%)
3 #Memory: 24.3 MB (Beats 74.7%)
4
5 class Solution(object):
6 def minOperations(self, nums, x):
7 """
8 :type nums: List[int]
9 :type x: int
10 :rtype: int
11 """
12 tar_sum = sum(nums) - x
13 l = 0
14 t_sum = 0
15 ans = -1
16 for r in range(len(nums)):
17 t_sum += nums[r]
18 while l <= r and t_sum > tar_sum:
19 t_sum -= nums[l]
20 l += 1
21 if tar_sum == t_sum:
22 ans = max(ans, r - l + 1)
23 return len(nums) - ans if ans != -1 else -1
24
]]>
2 #Runtime: 1773 ms (Beats 16%)
3 #Memory: 30.5 MB (Beats 48.38%)
4
5 class Solution(object):
6 def maxSlidingWindow(self, nums, k):
7 """
8 :type nums: List[int]
9 :type k: int
10 :rtype: List[int]
11 """
12 wd_max = []
13 ans = []
14 for i in range(len(nums)):
15 if wd_max and wd_max[0] == i - k:
16 wd_max.pop(0)
17 while wd_max and nums[wd_max[-1]] < nums[i]:
18 wd_max.pop()
19 wd_max.append(i)
20 if i >= k - 1:
21 ans.append(nums[wd_max[0]])
22 return ans
]]>
緇存姢涓や釜娓告爣i鍜宩錛宩璧板湪鍓嶏紝褰搃锝瀓涔嬮棿T鍜孎涔嬩腑鏈灝戝嚭鐜扮殑閭d竴涓秴榪噆嬈℃椂錛屽皢榪欎竴鍖洪棿鐨勭粺涓鏀逛負T鎴栬匜
2 #Runtime: 298 ms (Beats 84.38%)
3 #Memory: 13.6 MB (Beats 96.88%)
4
5 class Solution(object):
6 def maxConsecutiveAnswers(self, answerKey, k):
7 """
8 :type answerKey: str
9 :type k: int
10 :rtype: int
11 """
12 cnt_F, cnt_T = 0, 0
13 i, j = 0, 0
14 ans = 0
15 while j < len(answerKey):
16 if answerKey[j] == 'F':
17 cnt_F += 1
18 else:
19 cnt_T += 1
20 while min(cnt_T, cnt_F) > k:
21 if answerKey[i] == 'F':
22 cnt_F -= 1
23 else:
24 cnt_T -= 1
25 i += 1
26 ans = max(ans, cnt_F + cnt_T)
27 j += 1
28 return ans
]]>
2 #Runtime: 1555 ms (Beats 43.86%)
3 #Memory: 33.2 MB (Beats 91.23%)
4
5 class Solution(object):
6 def getAverages(self, nums, k):
7 """
8 :type nums: List[int]
9 :type k: int
10 :rtype: List[int]
11 """
12 t = 0
13 if len(nums) < 2 * k + 1:
14 ans = [-1] * len(nums)
15 return ans
16 ans = [-1] * k
17 for i in range(0, len(nums)):
18 t += nums[i]
19 if i >= 2 * k + 1:
20 t -= nums[i - 2 * k - 1]
21 if i >= 2 * k:
22 ans.append(t // (2 * k + 1))
23 if len(nums) > 1:
24 ans.extend([-1] * k)
25 return ans
]]>
2 #Runtime: 9186 ms (Beats 16.87%)
3 #Memory: 23.7 MB (Beats 81.93%)
4
5 class Solution(object):
6 def numSubseq(self, nums, target):
7 """
8 :type nums: List[int]
9 :type target: int
10 :rtype: int
11 """
12 nums.sort()
13 l, ans = 0, 0
14 r = len(nums) - 1
15 MOD = 10**9+7
16 while l <= r:
17 if nums[l] + nums[r] > target:
18 r -= 1
19 else:
20 ans += pow(2, r - l) % MOD
21 l += 1
22 return ans % MOD
]]>
2 #Runtime: 135 ms (Beats 83.33%)
3 #Memory: 18.1 MB (Beats 6.94%)
4
5 class Solution(object):
6 def maxVowels(self, s, k):
7 """
8 :type s: str
9 :type k: int
10 :rtype: int
11 """
12 cnt = [0] * (len(s) + 1)
13 t, ans = 0, 0
14 for i, ch in enumerate(s):
15 if ch in 'aeiou':
16 t += 1
17 cnt[i + 1] = t
18 for i in range(k, len(cnt)):
19 ans = max(ans, cnt[i] - cnt[i - k])
20 return ans
]]>
2 #Runtime: 384 ms (Beats 53.98%)
3 #Memory: 18.9 MB (Beats 18.14%)
4
5 class Solution(object):
6 def numRescueBoats(self, people, limit):
7 """
8 :type people: List[int]
9 :type limit: int
10 :rtype: int
11 """
12 people.sort()
13 p1 = 0
14 p2 = len(people) - 1
15 ans = 0
16 while p1 <= p2:
17 if p1 == p2:
18 ans += 1
19 break
20 if people[p1] + people[p2] <= limit:
21 ans += 1
22 p1 += 1
23 p2 -= 1
24 else:
25 ans += 1
26 p2 -= 1
27 return ans
28
]]>
瀛愬簭鍒楁墍鏈夋暟鐨勬渶灝忓糾inK錛屾渶澶у糾axK
璁句袱涓寚閽堟寚鍚戠鍚坢inK锝瀖axK鐨勬渶鍚庝綅緗紝pos鎸囧悜鏈鍚庝竴涓笉絎﹀悎minK锝瀖axK鑼冨洿鐨勪綅緗紝澶嶆潅搴(n)
2 #Runtime: 681 ms (Beats 56.52%)
3 #Memory: 24.3 MB (Beats 26.9%)
4
5 class Solution(object):
6 def countSubarrays(self, nums, minK, maxK):
7 """
8 :type nums: List[int]
9 :type minK: int
10 :type maxK: int
11 :rtype: int
12 """
13 pos, l, r = -1, -1, -1
14 cnt = 0
15 for i in range(len(nums)):
16 if minK <= nums[i] <= maxK:
17 if nums[i] == minK:
18 l = i
19 if nums[i] == maxK:
20 r = i
21 cnt += max(0, min(l, r) - pos)
22 else:
23 pos = i
24 l, r = -1, -1
25 return cnt
]]>
2 #Runtime: 932 ms (Beats 33.9%)
3 #Memory: 19.1 MB (Beats 84.36%)
4
5 class Solution(object):
6 def totalFruit(self, fruits):
7 """
8 :type fruits: List[int]
9 :rtype: int
10 """
11 cur_fruit = Counter()
12 ans, l = 0, 0
13 for r in range(len(fruits)):
14 cur_fruit[fruits[r]] += 1
15 if len(cur_fruit) > 2:
16 cur_fruit[fruits[l]] -= 1
17 if cur_fruit[fruits[l]] == 0:
18 cur_fruit.pop(fruits[l])
19 l += 1
20 ans = max(ans, r - l + 1)
21 return ans
]]>
2 #Runtime: 371 ms (Beats 12.21%)
3 #Memory: 14.6 MB (Beats 29.63%)
4
5 class Solution(object):
6 def findAnagrams(self, s, p):
7 """
8 :type s: str
9 :type p: str
10 :rtype: List[int]
11 """
12 cnt_p = Counter(p)
13 l = len(p)
14 ans = []
15 for i in range(len(s)):
16 if s[i] in cnt_p:
17 cnt_p[s[i]] -= 1
18 if i >= l and s[i-l] in cnt_p:
19 cnt_p[s[i-l]] += 1
20 if all([cnt_p[j] == 0 for j in cnt_p]):
21 ans.append(i - l + 1)
22 return ans
]]>
2 #Runtime: 299 ms (Beats 32.65%)
3 #Memory: 14 MB(Beats 23.38%)
4
5 class Solution(object):
6 def checkInclusion(self, s1, s2):
7 """
8 :type s1: str
9 :type s2: str
10 :rtype: bool
11 """
12 cnt_s1 = Counter(s1)
13 l1 = len(s1)
14 for i in range(len(s2)):
15 if s2[i] in cnt_s1:
16 cnt_s1[s2[i]] -= 1
17 if i >= l1 and s2[i-l1] in cnt_s1:
18 cnt_s1[s2[i-l1]] += 1
19 if all([cnt_s1[i] == 0 for i in cnt_s1]):
20 return True
21 return False
]]>
鍏坰ort list錛屾灇涓劇涓涓暟i=1~n-2錛岀劧鍚庤緗袱涓父鏍囷紝宸﹁竟浠巌+1鍚戝彸錛屽彸杈逛粠n鍚戝乏錛屾洿鏂板鏋滀笁涓暟涔嬪拰浜庣洰鏍囧煎樊璺濓紝濡傛灉涓夋暟涔嬪拰灝忎簬鐩爣鍊鹼紝絎竴涓父鏍囧彸縐伙紝鍚﹀垯絎簩涓彸杈瑰乏縐?/span>
2
3 class Solution(object):
4 def threeSumClosest(self, nums, target):
5 """
6 :type nums: List[int]
7 :type target: int
8 :rtype: int
9 """
10 nums.sort()
11 min_diff = 60001
12 for i in range(len(nums)):
13 pos1 = i + 1
14 pos2 = len(nums) - 1
15 while pos1 < pos2:
16 t_sum = nums[pos1] + nums[pos2] + nums[i]
17 if abs(target - t_sum) < min_diff:
18 min_diff = min(min_diff, abs(target - t_sum))
19 ans = t_sum
20 if abs(target - t_sum) == 0:
21 return target
22 if target > t_sum:
23 pos1 += 1
24 else:
25 pos2 -= 1
26 return ans
]]>
鏂規硶涓錛氬乏鍙充袱涓寚閽堝垎鍒粠棣栧熬寮濮嬫壂錛屽鏋滅浉鍔犲皬浜巘arget鍒欏乏杈規寚閽堝彸縐伙紝鍚﹀垯鍙寵竟鎸囬拡宸︾Щ
2 #Runtime: 237 ms
3 #Memory Usage: 14.3 MB
4
5 class Solution(object):
6 def twoSum(self, numbers, target):
7 """
8 :type numbers: List[int]
9 :type target: int
10 :rtype: List[int]
11 """
12 l = 0
13 r = len(numbers) - 1
14 while l < r:
15 if numbers[l] + numbers[r] == target:
16 return [l + 1, r + 1]
17 if numbers[l] + numbers[r] > target:
18 r -= 1
19 else:
20 l += 1
鏂規硶浜岋細宸﹁竟鎸囬拡浠庣涓涓暟寮濮嬪悜鍙蟲壂錛岀劧鍚庝簩鍒嗘煡鎵懼彸杈規槸鍚﹀瓨鍦ㄤ竴涓暟涓庡綋鍓嶅乏杈規寚閽堢殑鏁扮浉鍔犱負target
2 #Runtime: 243 ms
3 #Memory Usage: 14.9 MB
4
5 class Solution(object):
6 def twoSum(self, numbers, target):
7 """
8 :type numbers: List[int]
9 :type target: int
10 :rtype: List[int]
11 """
12 for i in range(0, len(numbers) - 1):
13 l = i + 1
14 r = len(numbers) - 1
15 while l <= r:
16 mid = int((l + r) / 2)
17 #print(mid)
18 if numbers[i] + numbers[mid] == target:
19 return([i + 1, mid + 1])
20 if numbers[i] + numbers[mid] < target:
21 l = mid + 1
22 else:
23 r = mid - 1
]]>
Python鐗堬細浣跨敤pop鎿嶄綔
2 #Runtime: 220 ms
3 #Memory Usage: 14.6 MB
4
5 class Solution(object):
6 def removeDuplicates(self, nums):
7 """
8 :type nums: List[int]
9 :rtype: int
10 """
11 i = 1
12 while i < len(nums):
13 if i > 0 and nums[i - 1] == nums[i]:
14 nums.pop(i)
15 else:
16 i += 1
17 return len(nums)
Python鐗堬細涓嶄嬌鐢╬op鎿嶄綔錛岀敤娓告爣鏍囪闇瑕佹妸褰撳墠鏁板瓧鎸埌鍓嶉潰鐨勫摢涓浣嶏紙濡傛灉褰撳墠鏁板瓧鍜屾父鏍囦綅緗殑鏁板瓧涓嶄竴鏍鳳級
2 #Runtime: 126 ms
3 #Memory Usage: 14.9 MB
4
5 class Solution(object):
6 def removeDuplicates(self, nums):
7 """
8 :type nums: List[int]
9 :rtype: int
10 """
11 cnt = 1;
12 for i in range(len(nums) - 1):
13 if nums[cnt - 1] != nums[i + 1]:
14 cnt += 1
15 nums[cnt - 1] = nums[i + 1]
16 return cnt
C鐗堬細涓嶄嬌鐢╬op鎿嶄綔錛岀敤娓告爣鏍囪闇瑕佹妸褰撳墠鏁板瓧鎸埌鍓嶉潰鐨勫摢涓浣嶏紙濡傛灉褰撳墠鏁板瓧鍜屾父鏍囦綅緗殑鏁板瓧涓嶄竴鏍鳳級
2 #Runtime: 27 ms
3 #Memory Usage: 7.4 MB
4
5 int removeDuplicates(int* nums, int numsSize){
6 int cnt = 1;
7 for(int i = 0; i < numsSize - 1; i++) {
8 if(nums[cnt - 1] != nums[i + 1]) {
9 cnt++;
10 nums[cnt - 1] = nums[i + 1];
11 }
12 }
13 return cnt;
14 }
]]>
"
"
鍙互鐢ㄤ互涓媍ase鍋氭祴璇曪紙鑷繁涔嬪墠鐨凮utput涓嶈兘閫氳繃榪欎釜case錛學A浜嗕竴嬈★級錛?br />"
"
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
鎬濊礬浜岋紙姣旀濊礬涓蹇竴鐐癸級錛?br />鍏坰ort錛屽啀鐢╠ict璁板綍榪欎竴鍒楁暟閲岄潰姣忎竴縐嶅兼渶鍚庡嚭鐜扮殑涓嬫爣浣嶇疆
涓ら噸for寰幆鏋氫婦鍓嶄袱涓暟i錛宩錛岀湅絎笁涓暟鍦ㄤ笉鍦╠ict閲岋紝濡傛灉鍦ㄧ殑璇濓紝瑕佹眰涓嬫爣k>j>i錛屼笌鎬濊礬涓涓鏍鳳紝娉ㄦ剰鍒ゆ柇鏄惁涓庣幇鏈夌殑鏁伴噸澶嶏紝濡傛灉鍏ㄩ儴鍔犲叆緇撴灉闆嗗悎鏈鍚庡啀鍒ら噸浼歍LE
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
]]>
涓寮濮嬫病鎯蟲竻妤歱os_l鐨勬洿鏂幫紝WA*4
2 #Runtime: 108 ms
3 #Memory Usage: 13.5 MB
4
5 class Solution(object):
6 def lengthOfLongestSubstring(self, s):
7 """
8 :type s: str
9 :rtype: int
10 """
11 dict_s = {}
12 pos_l = 0
13 pos_r = 0
14 ans = 0
15 while pos_r < len(s):
16 if s[pos_r] in dict_s:
17 if dict_s[s[pos_r]] >= pos_l:
18 pos_l = dict_s[s[pos_r]] + 1
19 dict_s[s[pos_r]] = pos_r
20 else:
21 dict_s[s[pos_r]] = pos_r
22 ans = max(ans, pos_r - pos_l + 1)
23 pos_r += 1
24 return ans
]]>
鍥犱負鍚勭鑴戞畫娌¤冭檻鍒扮殑case WA浜?嬈℃墠榪囥傘傘?br />
2 #Runtime: 302 ms
3 #Memory Usage: 14 MB
4
5 class Solution(object):
6 def minWindow(self, s, t):
7 """
8 :type s: str
9 :type t: str
10 :rtype: str
11 """
12 dict_s ={}
13 for i in s:
14 if i not in dict_s:
15 dict_s[i] = 1
16 else:
17 dict_s[i] += 1
18 dict_t ={}
19 for i in t:
20 if i not in dict_t:
21 dict_t[i] = 1
22 else:
23 dict_t[i] += 1
24 if i not in dict_s:
25 return ""
26 if dict_s[i] < dict_t[i]:
27 return ""
28 pos_l = 0
29 pos_r = 0
30 tp_len_t = len(t)
31 ans_l = 0
32 ans_r = len(s)
33 min_len = len(s)
34 while pos_r < len(s) or tp_len_t <= 0:
35
36 if tp_len_t > 0:
37 if s[pos_r] in dict_t:
38 dict_t[s[pos_r]] -= 1
39 if dict_t[s[pos_r]] >= 0:
40 tp_len_t -= 1
41 pos_r += 1
42 else:
43 if min_len > pos_r - pos_l:
44 ans_l = pos_l
45 ans_r = pos_r
46 min_len = ans_r - ans_l
47 if s[pos_l] in dict_t:
48 dict_t[s[pos_l]] += 1
49 if dict_t[s[pos_l]] > 0:
50 tp_len_t += 1
51 pos_l += 1
52
53 return s[ans_l : ans_r]
]]>
2 def containsNearbyDuplicate(self, nums, k):
3 """
4 :type nums: List[int]
5 :type k: int
6 :rtype: bool
7 """
8 pos = {}
9 for i in range(len(nums)):
10 if nums[i] in pos and i - pos[nums[i]] <= k:
11 return True
12 pos[nums[i]] = i
13 return False
]]>