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

LeetCode第343場周賽

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

2023.4.30LeetCode第343場周賽

A. 保齡球游戲的獲勝者

思路

根據(jù)題意模擬

代碼

class Solution {
public:
    int get(vector<int>& arr) {
        int res = 0;
        for (int i = 0; i < arr.size(); i ++ ) {
            res += arr[i];
            if (i && arr[i - 1] == 10 || i > 1 && arr[i - 2] == 10)
                res += arr[i];
        }
        return res;
    }

    int isWinner(vector<int>& player1, vector<int>& player2) {
        int a = get(player1);
        int b = get(player2);
        if (a > b) return 1;
        else if (a < b) return 2;
        return 0;
    }
};

B. 找出疊涂元素

思路

使用哈希表記錄每個(gè)數(shù)出現(xiàn)的位置,再用m+n個(gè)集合記錄每一行和每一列被涂滿的格子數(shù),若某行或某列全部被涂滿則返回答案

代碼

class Solution {
public:
    int firstCompleteIndex(vector<int>& arr, vector<vector<int>>& mat) {
        int n = mat.size(), m = mat[0].size();
        vector<unordered_set<int>> row(n), col(m);
        unordered_map<int, pair<int, int>> mp;
        for (int i = 0; i < n; i ++ )
            for (int j = 0; j < m; j ++ ) {
                mp[mat[i][j]] = {i, j};
            }
        for (int i = 0; i < arr.size(); i ++ ) {
            int x = mp[arr[i]].first, y = mp[arr[i]].second;
            row[x].insert(y);
            col[y].insert(x);
            if (row[x].size() == m || col[y].size() == n)
                return i;
        }
        return -1;
    }
};

C. 前往目標(biāo)的最小代價(jià)

思路

BFS
首先將距離大于兩點(diǎn)的曼哈頓距離的特殊路徑去掉
每個(gè)點(diǎn)考慮經(jīng)過每個(gè)特殊路徑到達(dá),分成兩段,一段是當(dāng)前點(diǎn)到特殊路徑的起點(diǎn),使用普通方式,另一段是特殊路徑的起點(diǎn)到終點(diǎn),使用特殊方式
若能更新最短距離,則加入隊(duì)列繼續(xù)更新其他點(diǎn)
每個(gè)點(diǎn)出隊(duì)時(shí),都和終點(diǎn)使用普通方式更新最短距離

代碼

class Solution {
public:
    typedef pair<int, int> PII;
    
    int get(PII a, PII b) {
        return abs(a.first - b.first) + abs(a.second - b.second);
    }
    
    int minimumCost(vector<int>& start, vector<int>& target, vector<vector<int>>& specialRoads) {
        vector<vector<int>> a;
        for (auto x : specialRoads) {
            if (abs(x[2] - x[0]) + abs(x[3] - x[1]) > x[4])
                a.push_back(x);
        }
        queue<PII> q;
        map<PII, int> d;
        q.push({start[0], start[1]});
        d[{start[0], start[1]}] = 0;
        PII tar = {target[0], target[1]};
        d[tar] = get(tar, {start[0], start[1]});
        while (q.size()) {
            auto t = q.front();
            q.pop();
            d[tar] = min(d[tar], d[t] + get(tar, t));
            for (auto i : a) {
                int dis = d[t] + get(t, {i[0], i[1]}) + i[4];
                PII ed = {i[2], i[3]};
                if (!d.count(ed) || d[ed] > dis) {
                    d[ed] = dis;
                    q.push(ed);
                }
            }
        }
        
        return d[tar];
    }
};

D. 字典序最小的美麗字符串

思路

每次檢查回文只用考慮前相鄰一位和間隔一位是否相同,即如果不存在長度為2或3的回文串,就不存在長度2以上回文串
要使字典序盡量小,就盡量讓右邊的數(shù)位變大,當(dāng)所有數(shù)位都滿足不是回文串時(shí)直接返回文章來源地址http://www.zghlxwxcb.cn/news/detail-434320.html

代碼

class Solution {
public:
    string smallestBeautifulString(string s, int k) {
        int n = s.size();
        int i = n - 1; //從最右邊開始考慮
        s[i] ++ ;
        while (i < n && i >= 0) {
            if (s[i] == 'a' + k) { //超出最高位
                if (i == 0) return ""; //此時(shí)已經(jīng)是最左
                s[i] = 'a';
                s[ -- i] ++ ; //上一位進(jìn)位
            } else if (i > 0 && s[i] == s[i - 1] || i > 1 && s[i] == s[i - 2]) { ///不滿足回文
                s[i] ++ ;
            } else {
                i ++ ; //檢查右邊是否滿足
            }
        }
        return s;
    }
};

到了這里,關(guān)于LeetCode第343場周賽的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • [LeetCode周賽復(fù)盤] 第 359 場周賽20230820

    [LeetCode周賽復(fù)盤] 第 359 場周賽20230820

    T1 模擬。 T2 數(shù)學(xué)貪心。 T3 dp。 T4 分組+滑窗。 2828. 判別首字母縮略詞 1. 題目描述 2. 思路分析 按題意模擬即可。 3. 代碼實(shí)現(xiàn) 2829. k-avoiding 數(shù)組的最小總和 1. 題目描述 2. 思路分析 貪心 1~k-1中,選了1就不能選k-1;選了2就不能選k-2… 因此可以選1~k//2 剩余的從k開始向上選。 可以

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

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

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

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

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

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

    2024年02月15日
    瀏覽(16)
  • leetcode 第360場周賽

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

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

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

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

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

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

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

    2024年02月12日
    瀏覽(18)
  • leetcode第354場周賽補(bǔ)題

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

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

    Leetcode 第 365 場周賽題解

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

    2024年02月07日
    瀏覽(17)
  • LeetCode 第385場周賽個(gè)人題解

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

    2024年02月19日
    瀏覽(31)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包