leedcode刷题笔记
Posted issue是fw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leedcode刷题笔记相关的知识,希望对你有一定的参考价值。
算法竞赛结束后好久不刷题了
以后打算每天都写1-2
题
func max(x,y int) int
if x<y
return y
else
return x
func lengthOfLongestSubstring(s string) int
mp := map[byte]int
n := len(s)
rk,ans := -1,0
for i:=0;i<n;i++
if i!=0
delete( mp,s[i-1] )
for rk+1<n && mp[s[rk+1]] == 0
mp[s[rk+1]]++
rk++
ans = max( ans,rk-i+1 )
return ans
276周赛
考虑二分答案mid
对于电量多于mid
的电池,肯定可以在这mid
轮每次都给别人供电,于是此时转化为运行n-1
台电脑的子问题
对于电量只有val(val<mid)
的电池,我们可以在val
轮给别人供电,于是累计这个val
到变量now
上
当now>=mid
时,说明又有一台电脑可以完成供电,令now-=mid
,转化为运行n-1
台电脑的子问题
class Solution
public:
bool isok(long long mid,long long n,vector<int>& vec )
long long ans = 0, now = 0;
for(auto v:vec )
if( v>=mid ) ans++;
else
now += v;
if( now>=mid ) now -= mid, ans++;
return ans>=n;
long long maxRunTime(int n, vector<int>& batteries)
long long sum = 0;
for(auto v:batteries ) sum += v;
long long l = 1, r = sum/n, ans = 0;
while( r>=l )
long long mid = l+r>>1;
if( isok(mid,n,batteries) ) l = mid+1, ans = mid;
else r = mid-1;
return ans;
;
以上是关于leedcode刷题笔记的主要内容,如果未能解决你的问题,请参考以下文章