今天的
def maximumBeauty(self, nums: List[int], k: int) -> int:
tmp = []
for num in nums:
tmp.append((num-k, -1))
tmp.append((num+k, 1))
ans, sum = 0, 0
for _, i in sorted(tmp):
sum += i
ans = max(ans, -sum)
return ans
結果很慢
用普通先sort再two pointer好像快很多
昨天的
看提示說數字很小
直覺想到binary search
但寫的好醜
很多地方可以改 但過了就懶改了
def maximumLength(self, s: str) -> int:
n = len(s)
def check(k):
if k==0:
return True
cnt = defaultdict(int)
for i in range(n-k+1):
if len(set([c for c in s[i:i+k]]))==1:
cnt[s[i]] += 1
if len(cnt)>0 and max(cnt.values())>=3:
return True
else:
return False
l,r = 0, n
while l<r:
mid = (l+r)//2
if not check(mid):
r=mid
else:
l=mid+1
return -1 if l==1 else l-1