最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?LeetCode1769移動所有球到每個盒子最小操作數(shù)示例

 更新時間:2022年12月16日 16:14:19   作者:LetMeFly  
這篇文章主要為大家介紹了C++?LeetCode1769移動所有球到每個盒子所需最小操作數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

LeetCode 1769.移動所有球到每個盒子所需的最小操作數(shù)

力扣題目鏈接:leetcode.cn/problems/mi…

n 個盒子。給你一個長度為 n 的二進(jìn)制字符串 boxes ,其中 boxes[i] 的值為 '0' 表示第 i 個盒子是 的,而 boxes[i] 的值為 '1' 表示盒子里有 一個 小球。

在一步操作中,你可以將 一個 小球從某個盒子移動到一個與之相鄰的盒子中。第 i 個盒子和第 j 個盒子相鄰需滿足 abs(i - j) == 1 。注意,操作執(zhí)行后,某些盒子中可能會存在不止一個小球。

返回一個長度為 n 的數(shù)組 answer ,其中 answer[i] 是將所有小球移動到第 i 個盒子所需的 最小 操作數(shù)。

每個 answer[i] 都需要根據(jù)盒子的 初始狀態(tài) 進(jìn)行計(jì)算。

示例 1:

輸入:boxes = "110"
輸出:[1,1,3]
解釋:每個盒子對應(yīng)的最小操作數(shù)如下:
1) 第 1 個盒子:將一個小球從第 2 個盒子移動到第 1 個盒子,需要 1 步操作。
2) 第 2 個盒子:將一個小球從第 1 個盒子移動到第 2 個盒子,需要 1 步操作。
3) 第 3 個盒子:將一個小球從第 1 個盒子移動到第 3 個盒子,需要 2 步操作。將一個小球從第 2 個盒子移動到第 3 個盒子,需要 1 步操作。共計(jì) 3 步操作。

示例 2:

輸入:boxes = "001011"
輸出:[11,8,5,4,3,4]

提示:

  • n == boxes.length
  • 1 <= n <= 2000
  • boxes[i]'0''1'

方法一:數(shù)學(xué)思維

首先遍歷一遍原始數(shù)組,求出將所有小球全部移動到下標(biāo)0的話所需要的步驟。同時,記錄下來從下標(biāo)1開始到結(jié)束,一共有多少個小球

int right1 = 0, left1 = 0, cnt = 0;  // right1記錄下標(biāo)0后面有多少個1(不包含下標(biāo)0) | cnt記錄將所有小球都移動到下標(biāo)0需要多少步 | left1 記錄下標(biāo)0左邊有多少個1
int n = boxes.size();
for (int i = 1; i < n; i++) {
    if (boxes[i] == '1') {
        right1++, cnt += i;
    }
}
vector<int> ans(n);
ans[0] = cnt;

接下來我們再次遍歷數(shù)組,如果某個元素的上一個元素是1,那么這個元素左邊的1的數(shù)量就會加一,因此left1++

這時候,這個盒子和上一個盒子相比,這一個盒子左邊*的所有1需要移動的步數(shù)都+1,這一個盒子左邊共有left11,因此cnt += left1

這時候,這個盒子和上一個盒子相比,上一個盒子右邊的所有1需要移動的步數(shù)都-1,上一個盒子右邊共有right1個1,因此cnt -= right1。

之后,如果這個盒子初始值也是1的話,再在遍歷下一個元素之前提前更新right1的值(right1--

  • 時間復(fù)雜度O(n)
  • 空間復(fù)雜度O(1),力扣答案不計(jì)入算法空間復(fù)雜度

AC代碼

C++

class Solution {
public:
    vector<int> minOperations(string& boxes) {
        int right1 = 0, left1 = 0, cnt = 0;
        int n = boxes.size();
        for (int i = 1; i < n; i++) {
            if (boxes[i] == '1') {
                right1++, cnt += i;
            }
        }
        vector<int> ans(n);
        ans[0] = cnt;
        for (int i = 1; i < n; i++) {
            if (boxes[i - 1] == '1')
                left1++;
            cnt -= right1;
            cnt += left1;
            ans[i] = cnt;
            if (boxes[i] == '1')
                right1--;
        }
        return ans;
    }
};

運(yùn)行結(jié)果還不錯:

以上就是C++ LeetCode1769移動所有球到每個盒子所需最小操作數(shù)示例的詳細(xì)內(nèi)容,更多關(guān)于C++ 移動球到盒子最小操作數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言中循環(huán)嵌套的應(yīng)用方式

    C語言中循環(huán)嵌套的應(yīng)用方式

    這篇文章主要介紹了C語言中循環(huán)嵌套的應(yīng)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • c++實(shí)現(xiàn)哈希桶的步驟

    c++實(shí)現(xiàn)哈希桶的步驟

    本文主要介紹了c++實(shí)現(xiàn)哈希桶的步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • C/C++數(shù)據(jù)對齊詳細(xì)解析

    C/C++數(shù)據(jù)對齊詳細(xì)解析

    通常我們在寫代碼的時候是不需要考慮對齊的影響的,都是依賴編譯器來為我們選擇適合的對齊策略,我們也可以通過傳遞給編譯器預(yù)編譯指令來指定數(shù)據(jù)對齊的方法
    2013-10-10
  • C++三元表達(dá)式詳情

    C++三元表達(dá)式詳情

    這篇文章主要介紹了C++三元表達(dá)式,文章圍繞C++三元表達(dá)式的相關(guān)資料展開詳細(xì)內(nèi)容,需要的朋友可以參考一下,希望多你有所幫助
    2021-11-11
  • C語言結(jié)構(gòu)體,枚舉,聯(lián)合體詳解

    C語言結(jié)構(gòu)體,枚舉,聯(lián)合體詳解

    下面小編就為大家?guī)硪黄媪私釩語言結(jié)構(gòu)體,枚舉,聯(lián)合體。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-09-09
  • C語言二叉樹層序遍歷

    C語言二叉樹層序遍歷

    這篇文章主要介紹了C語言二叉樹層序遍歷,文章基于C語言的相關(guān)資料展開詳細(xì)的文章內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-04-04
  • C++ 基礎(chǔ)教程之虛函數(shù)實(shí)例代碼詳解

    C++ 基礎(chǔ)教程之虛函數(shù)實(shí)例代碼詳解

    虛函數(shù)在 c++ 的繼承體系中是一個非常重要概念,讓我們可以在子類中復(fù)寫父類的方法。這篇文章主要介紹了C++ 基礎(chǔ)教程之虛函數(shù)實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2020-02-02
  • 基于C++ OpenCV制作電子相冊查看器

    基于C++ OpenCV制作電子相冊查看器

    這篇文章主要介紹了如何使用OpenCV C++ 制作電子相冊查看器。類似于win10系統(tǒng)的“照片”功能。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-01-01
  • C/C++實(shí)操True and false詳解

    C/C++實(shí)操True and false詳解

    這篇文章主要給大家介紹了關(guān)于Python中常用的數(shù)據(jù)類型bool(布爾)類型的兩個值:True和False的相關(guān)資料,通過示例代碼給大家進(jìn)行了解惑,讓對這兩個值有所疑惑的朋友們能有起到一定的幫助,需要的朋友下面來一起看看吧。
    2021-09-09
  • 解決C語言數(shù)組元素循環(huán)右移的問題

    解決C語言數(shù)組元素循環(huán)右移的問題

    今天小編就為大家分享一篇解決C語言數(shù)組元素循環(huán)右移的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論

黔西| 台安县| 冷水江市| 上杭县| 阿勒泰市| 平乡县| 体育| 台南市| 故城县| 图们市| 韶关市| 吉水县| 华容县| 曲阜市| 社旗县| 江永县| 友谊县| 察哈| 曲水县| 青神县| 文昌市| 会泽县| 思南县| 庆云县| 金坛市| 新绛县| 巫山县| 永丰县| 北宁市| 贺州市| 泸定县| 长兴县| 新兴县| 富阳市| 静宁县| 崇文区| 平潭县| 六枝特区| 瑞金市| 辽阳市| 沈丘县|