国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【LeetCode周賽】LeetCode第359場周賽

這篇具有很好參考價值的文章主要介紹了【LeetCode周賽】LeetCode第359場周賽。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

判別首字母縮略詞

給你一個字符串?dāng)?shù)組 words 和一個字符串 s ,請你判斷 s 是不是 words 的 首字母縮略詞 。
如果可以按順序串聯(lián) words 中每個字符串的第一個字符形成字符串 s ,則認為 s 是 words 的首字母縮略詞。例如,“ab” 可以由 [“apple”, “banana”] 形成,但是無法從 [“bear”, “aardvark”] 形成。
如果 s 是 words 的首字母縮略詞,返回 true ;否則,返回 false 。

示例 1:

輸入:words = [“alice”,“bob”,“charlie”], s = “abc”
輸出:true
解釋:words 中"alice"、“bob” 和 “charlie” 的第一個字符分別是 ‘a(chǎn)’、‘b’ 和 ‘c’。因此,s = "abc"是首字母縮略詞。

示例 2:

輸入:words = [“an”,“apple”], s = “a”
輸出:false
解釋:words 中 “an” 和 "apple"的第一個字符分別是 ‘a(chǎn)’ 和 ‘a(chǎn)’。 串聯(lián)這些字符形成的首字母縮略詞是 “aa” 。 因此,s = “a” 不是首字母縮略詞。

示例 3:

輸入:words = [“never”,“gonna”,“give”,“up”,“on”,“you”], s = “ngguoy”
輸出:true
解釋:串聯(lián)數(shù)組 words 中每個字符串的第一個字符,得到字符串 “ngguoy” 。 因此,s = "ngguoy"是首字母縮略詞。

提示:
1 < = w o r d s . l e n g t h < = 100 1 <= words.length <= 100 1<=words.length<=100
1 < = w o r d s [ i ] . l e n g t h < = 10 1 <= words[i].length <= 10 1<=words[i].length<=10
1 < = s . l e n g t h < = 100 1 <= s.length <= 100 1<=s.length<=100
words[i] 和 s 由小寫英文字母組成
思路:
簡單模擬題,直接按照題意取出每個單詞的首字母,拼接起來,判斷和字符串s是否相等即可。
代碼:

class Solution {
public:
    bool isAcronym(vector<string>& words, string s) {
        string res;
        for(auto word:words){
            res+=word[0];
        }
        return res==s;
    }
};

k-avoiding 數(shù)組的最小總和

給你兩個整數(shù) n 和 k 。
對于一個由不同正整數(shù)組成的數(shù)組,如果其中不存在任何求和等于 k 的不同元素對,則稱其為 k-avoiding 數(shù)組。
返回長度為 n 的 k-avoiding 數(shù)組的可能的最小總和。
示例 1:

輸入:n = 5, k = 4
輸出:18
解釋:設(shè)若 k-avoiding 數(shù)組為 [1,2,4,5,6] ,其元素總和為 18 ??梢宰C明不存在總和小于 18 的 k-avoiding 數(shù)組。

示例 2:

輸入:n = 2, k = 6
輸出:3
解釋:可以構(gòu)造數(shù)組 [1,2] ,其元素總和為 3 。 可以證明不存在總和小于 3 的k-avoiding 數(shù)組。

提示:
1 < = n , k < = 50 1 <= n, k <= 50 1<=n,k<=50
思路:
簡單模擬題,需要構(gòu)造一個長度為n的數(shù)組,滿足不存在求和等于k的兩個元素。數(shù)據(jù)范圍很小,那么直接從1開始枚舉,將每個數(shù)插入數(shù)組之前,判斷該數(shù)字插入是否會和之前的數(shù)字相加等于k,不會等于k才能插入數(shù)組中。
代碼:

class Solution {
public:
    bool Find(vector<int>p,int x,int k){
        for(auto a:p){
            if(a==k-x)return 1;
        }
        return 0;
    }
    int minimumSum(int n, int k) {
        int x=1,sum=0;
        vector<int>p;
        while(p.size()<n){
            if(!Find(p,x,k)){
                sum+=x;
                p.push_back(x++);
            }
            else x++;
        }
        return sum;
    }
};

銷售利潤最大化

給你一個整數(shù) n 表示數(shù)軸上的房屋數(shù)量,編號從 0 到 n - 1 。
另給你一個二維整數(shù)數(shù)組 offers ,其中 o f f e r s [ i ] = [ s t a r t i , e n d i , g o l d i ] offers[i] = [start_i, end_i, gold_i] offers[i]=[starti?,endi?,goldi?] 表示第 i i i 個買家想要以 g o l d i gold_i goldi? 枚金幣的價格購買從 s t a r t i start_i starti? e n d i end_i endi? 的所有房屋。
作為一名銷售,你需要有策略地選擇并銷售房屋使自己的收入最大化。
返回你可以賺取的金幣的最大數(shù)目。
注意 同一所房屋不能賣給不同的買家,并且允許保留一些房屋不進行出售。

示例 1:

輸入:n = 5, offers = [[0,0,1],[0,2,2],[1,3,2]]
輸出:3
解釋:有 5 所房屋,編號從 0 到4 ,共有 3 個購買要約。 將位于 [0,0] 范圍內(nèi)的房屋以 1 金幣的價格出售給第 1 位買家,并將位于 [1,3] 范圍內(nèi)的房屋以2 金幣的價格出售給第 3 位買家。 可以證明我們最多只能獲得 3 枚金幣。

示例 2:

輸入:n = 5, offers = [[0,0,1],[0,2,10],[1,3,2]]
輸出:10
解釋:有 5 所房屋,編號從 0 到4 ,共有 3 個購買要約。 將位于 [0,2] 范圍內(nèi)的房屋以 10 金幣的價格出售給第 2 位買家。 可以證明我們最多只能獲得 10枚金幣。

提示:
1 < = n < = 1 0 5 1 <= n <= 10^5 1<=n<=105
o f f e r s [ i ] . l e n g t h = = 3 offers[i].length == 3 offers[i].length==3
0 < = s t a r t i < = e n d i < = n ? 1 0 <= starti <= endi <= n - 1 0<=starti<=endi<=n?1
1 < = g o l d i < = 1 0 3 1 <= goldi <= 10^3 1<=goldi<=103

思路:
動態(tài)規(guī)劃,dp[i+1]表示購買編號不超過i的房屋所能獲得的最大利益。

  • 若不購買, d p [ i + 1 ] = d p [ i ] dp[i+1]=dp[i] dp[i+1]=dp[i]
  • 若購買,那么遍歷所有 e n d j = i end_j=i endj?=i的買家請求, d p [ i + 1 ] = m a x ( d p [ i + 1 ] , d p [ s t a r t j ] + g o l d j ) dp[i+1]=max(dp[i+1],dp[start_j]+gold_j) dp[i+1]=max(dp[i+1],dp[startj?]+goldj?)
    可以先將所有相同房屋結(jié)尾的購買請求,通過結(jié)尾房屋編號存儲起來。
    d p [ i + 1 ] = m a x { d p [ i ] 不購買 i 房屋 d p [ i + 1 ] = d p [ s t a r t j ] + g o l d j 購買 i 房屋 dp[i+1]=max\begin{cases} dp[i] & 不購買i房屋 \\ dp[i+1]=dp[start_j]+gold_j & 購買i房屋 \\ \end{cases} dp[i+1]=max{dp[i]dp[i+1]=dp[startj?]+goldj??不購買i房屋購買i房屋?

代碼:

class Solution {
public:
    int maximizeTheProfit(int n, vector<vector<int>>& offers){
        //dp[i]維護的是只賣到第i個房子的收益
        vector<vector<pair<int, int>>>tmp(n);
        for(auto offer:offers){
            tmp[offer[1]].push_back({offer[0],offer[2]});
        }
        int dp[n+1];//dp[i+1]維護的就是買到第i個房子的收益
        memset(dp,0,sizeof(dp));
        for(int i=0;i<n;i++){
            dp[i+1]=dp[i];//不買第i個房子,那么其收益最大就是dp[i]
            for(auto pii:tmp[i]){
                int start=pii.first,gold=pii.second;//買第i個房子
                dp[i+1]=max(dp[i+1],dp[start]+gold);
            }
        }
        return dp[n];
    }
};

找出最長等值子數(shù)組

給你一個下標(biāo)從 0 開始的整數(shù)數(shù)組 nums 和一個整數(shù) k 。
如果子數(shù)組中所有元素都相等,則認為子數(shù)組是一個 等值子數(shù)組 。注意,空數(shù)組是 等值子數(shù)組 。
從 nums 中刪除最多 k 個元素后,返回可能的最長等值子數(shù)組的長度。
子數(shù)組 是數(shù)組中一個連續(xù)且可能為空的元素序列。

示例 1:

輸入:nums = [1,3,2,3,1,3], k = 3
輸出:3
解釋:最優(yōu)的方案是刪除下標(biāo) 2 和下標(biāo) 4 的元素。刪除后,nums 等于 [1, 3, 3, 3] 。 最長等值子數(shù)組從 i = 1 開始到 j = 3 結(jié)束,長度等于 3 ??梢宰C明無法創(chuàng)建更長的等值子數(shù)組。

示例 2:

輸入:nums = [1,1,2,2,1,1], k = 2
輸出:4
解釋:最優(yōu)的方案是刪除下標(biāo) 2 和下標(biāo) 3 的元素。 刪除后,nums 等于 [1, 1, 1, 1] 。 數(shù)組自身就是等值子數(shù)組,長度等于 4 。 可以證明無法創(chuàng)建更長的等值子數(shù)組。

提示:
1 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
1 < = n u m s [ i ] < = n u m s . l e n g t h 1 <= nums[i] <= nums.length 1<=nums[i]<=nums.length
0 < = k < = n u m s . l e n g t h 0 <= k <= nums.length 0<=k<=nums.length

分析:
分析題意,得知題目的目的就是需要刪除每兩個相同的數(shù)字之間不同的數(shù),在刪除k次的情況下,使得連續(xù)的相同的數(shù)字最多。那么我們可以存儲每一個數(shù)字出現(xiàn)的位置。對于每一個數(shù)字,因為我們找到刪除后,連續(xù)的該數(shù)字最多,比如說,對數(shù)字1,我們可以先維護出每兩個1之間的距離,那么我們的目的就是要找到一串距離,使得距離和小于k,且距離的個數(shù)最多。顯然可以用滑動窗口的方法,獲得滿足條件的答案。
代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-685816.html

class Solution {
public:
    const int MAXN = 1e5+5;
    int longestEqualSubarray(vector<int>& nums, int k) {
        if(nums.size()==1)return 1;
        vector<int>p[MAXN];
        for(int i=0;i<nums.size();i++){
            p[nums[i]].push_back(i);//先維護一下每個數(shù)字的位置
        }
        int res=1;
        for(int i=1;i<=nums.size();i++){
            int cnt=0,ans=0;
            vector<int>q;
            for(int j=1;j<p[i].size();j++){//維護每個數(shù)字兩兩之間的距離
                q.push_back(p[i][j]-p[i][j-1]-1);
            }
            for(int l=0,r=0;r<q.size();){//雙指針,得到最多的距離
                cnt+=q[r++];
                while(cnt>k)cnt-=q[l++];
                ans=max(ans,r-l+1);
            }
            res=max(res,ans);
        }
        return res;
    }
};

到了這里,關(guān)于【LeetCode周賽】LeetCode第359場周賽的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • leetcode 第360場周賽

    好久沒參加leetcode周賽了,比賽時間都從兩小時變成了一個半小時。這次周賽由兩道簽到題和兩道中等難度題組成,嚴(yán)格來說最后一道的難度也可以視為hard,但是只要想到正確的思路,編碼還是比較容易的。 比賽鏈接:leetcode 第 360 場周賽 題目描述 給你一個長度為 n 的字符串

    2024年02月11日
    瀏覽(25)
  • LeetCode第354場周賽

    給你一個下標(biāo)從 1 開始、長度為 n 的整數(shù)數(shù)組 nums 。 對 nums 中的元素 nums[i] 而言,如果 n 能夠被 i 整除,即 n % i == 0 ,則認為 num[i] 是一個 特殊元素 。 返回 nums 中所有 特殊元素 的 平方和 。 直接模擬就好了 給你一個下標(biāo)從 0 開始的整數(shù)數(shù)組 nums 和一個 非負 整數(shù) k 。 在一

    2024年02月16日
    瀏覽(28)
  • LeetCode第347場周賽

    2023.5.28LeetCode第347場周賽 從最后一位開始遍歷,為0則跳過 暴力模擬 對于每個 s[i] != s[i - 1] ,要使其相等 有兩種選擇,翻轉(zhuǎn)前 i 個,或者翻轉(zhuǎn)后 n - i 個,選擇代價最小的方案 動態(tài)規(guī)劃 從小到大枚舉所有值,每個值一定是從更小的數(shù)轉(zhuǎn)移而來 定義動態(tài)規(guī)劃數(shù)組f, f[i][j] 表示

    2024年02月06日
    瀏覽(18)
  • LeetCode第343場周賽

    2023.4.30LeetCode第343場周賽 根據(jù)題意模擬 使用哈希表記錄每個數(shù)出現(xiàn)的位置,再用m+n個集合記錄每一行和每一列被涂滿的格子數(shù),若某行或某列全部被涂滿則返回答案 BFS 首先將距離大于兩點的曼哈頓距離的特殊路徑去掉 每個點考慮經(jīng)過每個特殊路徑到達,分成兩段,一段是當(dāng)

    2024年02月02日
    瀏覽(23)
  • [LeetCode周賽復(fù)盤] 第 353 場周賽20230709

    [LeetCode周賽復(fù)盤] 第 353 場周賽20230709

    感覺有獎品大家都來了。 T1 數(shù)學(xué)。 T2 dp。 T3 dp。 T4 差分/BIT RUPQ。 6451. 找出最大的可達成數(shù)字 1. 題目描述 2. 思路分析 為了使x num在t步內(nèi)相同,需要相向而行,每步最大縮短距離是2,那么t步距離是2t。 3. 代碼實現(xiàn) 6899. 達到末尾下標(biāo)所需的最大跳躍次數(shù) 1. 題目描述 2. 思路分

    2024年02月15日
    瀏覽(16)
  • [LeetCode周賽復(fù)盤] 第 348場周賽20230604

    [LeetCode周賽復(fù)盤] 第 348場周賽20230604

    這場可惜了。 T1 模擬。 T2 模擬。 T3 倒序計算。 T4 同時限制上下界的數(shù)位DP。 6462. 最小化字符串長度 1. 題目描述 2. 思路分析 題意仔細想一下就會發(fā)現(xiàn),其實會將每個字符僅留1個。 3. 代碼實現(xiàn) 6424. 半有序排列 1. 題目描述 2. 思路分析 由于只能相鄰交換來移動,因此每次只能

    2024年02月08日
    瀏覽(53)
  • leetcode第 357/358 場周賽

    可能別人有更好的解法,我這寫法是不斷往線段樹中插入數(shù)值,每次先插入nums[i-x],然后搜索(1到i)中的最大值和(i到max)中的最小值去更新ans。 看了看別人題解,直接用set寫是真的牛。自己還是見識短淺了。 暴力亂搞,考慮兩種極端情況,一種無腦選profit大的,一種優(yōu)先選

    2024年02月12日
    瀏覽(19)
  • Leetcode 第 365 場周賽題解

    Leetcode 第 365 場周賽題解

    思路 暴力。 代碼 復(fù)雜度分析 時間復(fù)雜度:O(n 3 ),其中 n 是數(shù)組 nums 的長度。 空間復(fù)雜度:O(1)。 思路 枚舉 k,我們需要知道 k 左邊 nums[i]?nums[j] 的最大值。 使用 pre_max 維護 k 之前的 nums[i] 的最大值,使用 max_diff 維護 nums[i]?nums[j] 的最大值。 每次遍歷一個 nums[i],都更新

    2024年02月07日
    瀏覽(17)
  • leetcode第354場周賽補題

    6889. 特殊元素平方和 - 力扣(LeetCode) 思路:模擬 6929. 數(shù)組的最大美麗值 - 力扣(LeetCode) 思路:排序+雙指針 6927. 合法分割的最小下標(biāo) - 力扣(LeetCode) 思路:哈希+枚舉 6924. 最長合法子字符串的長度 - 力扣(LeetCode) 思路:哈希+雙指針

    2024年02月16日
    瀏覽(20)
  • LeetCode 第385場周賽個人題解

    目錄 100212. 統(tǒng)計前后綴下標(biāo)對 I 原題鏈接 題目描述 接口描述 思路分析 代碼詳解 100229. 最長公共前綴的長度 原題鏈接 題目描述 接口描述 思路分析 代碼詳解 100217. 出現(xiàn)頻率最高的素數(shù) 原題鏈接 題目描述 接口描述 思路分析 代碼詳解 100212. 統(tǒng)計前后綴下標(biāo)對 II 原題鏈接 題目

    2024年02月19日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包