leedcode刷题笔记

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leedcode刷题笔记相关的知识,希望对你有一定的参考价值。

算法竞赛结束后好久不刷题了

以后打算每天都写1-2

3. 无重复字符的最长子串

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周赛

D.同时运行 N 台电脑的最长时间

考虑二分答案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刷题笔记的主要内容,如果未能解决你的问题,请参考以下文章

leedcode刷题笔记

leedcode算法刷题之利用普通排序算法思路

leedcode 394. 字符串解码(栈,模拟)

leedcode Longest Palindromic Substring

LeedCode3Sum

leedcode0002. 链数之和