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

【LeetCode - 每日一題】1073. 負二進制數(shù)相加 (2023.05.18)

這篇具有很好參考價值的文章主要介紹了【LeetCode - 每日一題】1073. 負二進制數(shù)相加 (2023.05.18)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1073. 負二進制數(shù)相加

題意

  • 基數(shù)為 -2 。
  • 實現(xiàn)兩個 0/1 數(shù)組串的加法。

解法

這是一道模擬題。

設(shè) arr1[i]arr2[i] 是數(shù)組 arr1arr2 從低到高的第 i 位數(shù)。

首先回顧普通的二進制數(shù)的相加,從低位開始計算,在計算的同時維護用一個變量 carry 維護進位信息,因此,對于第 i 位的結(jié)果 ans[i] = arr1[i] + arr2[i] + carry。若 ans[i] = 0, 1,則更新 carry = 0,ans[i] = 0, 1;若 ans[i] = 2, 3,則更新 carry = 1,ans[i] = ans[i] - 2。

類比到基數(shù)為 -2 的二進數(shù)相加上,從低位開始計算,在計算的同時用一個變量 carry 維護進位信息,同樣地,對于第 i 為的結(jié)果 ans[i] = arr1[i] + arr2[i] + carry。則此時的 carry 的范圍變成了 [-1, 0],ans[i] 的范圍變成了 [-1, 0, 1, 2]。若 ans[i] = 0, 1,則更新 carry = 0,ans[i] = 0, 1;若 ans[i] = 2,則更新 carry = -1(因為相鄰位的正負號是反的,所以進位一定是 -1 ),ans[i] = ans[i] - 2;若 ans[i] = -1,此時是一種特殊情況,需要單獨討論:

當 ans[i] = -1 時,需要將其進行轉(zhuǎn)換。又注意到:
(-2)i+1 + (-2)i = - (-2)i,所以將 ans[i] 賦為 -1 和將 ans[i] 和 ans[i+1] 都加 1 的效果是一樣的,因此更新 carry = 1,ans[i] = 1。文章來源地址http://www.zghlxwxcb.cn/news/detail-451579.html

// 官方解法
class Solution {
public:
    vector<int> addNegabinary(vector<int>& arr1, vector<int>& arr2) {
        vector<int> ans;
        int idx1 = arr1.size() - 1, idx2 = arr2.size() - 1;
        int carry = 0;

        while(idx1 >= 0 || idx2 >= 0 || carry) 	// carry 要放在 while 循環(huán)條件里
        {
            int x = carry;
            
            if(idx1 >= 0)
            {
                x += arr1[idx1];
            }
            if(idx2 >= 0)
            {
                x += arr2[idx2];
            }
            idx1 --;
            idx2 --;
            
            if(x >=2)
            {
                ans.push_back(x - 2);
                carry = -1;
            }
            else if (x >= 0)
            {
                ans.push_back(x);
                carry = 0;
            }
            else
            {
                ans.push_back(1);
                carry = 1;
            }
        }

        // 刪去前置 0 
        while(ans.size() > 1 && ans.back() == 0)
        {
            ans.pop_back();
        }

        reverse(ans.begin(), ans.end());

        return ans;
    }
};

到了這里,關(guān)于【LeetCode - 每日一題】1073. 負二進制數(shù)相加 (2023.05.18)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ( 位運算 ) 190. 顛倒二進制位 ——【Leetcode每日一題】

    ( 位運算 ) 190. 顛倒二進制位 ——【Leetcode每日一題】

    難度:簡單 顛倒給定的 32 位無符號整數(shù)的二進制位。 提示: 請注意,在某些語言(如 Java )中,沒有無符號整數(shù)類型。在這種情況下,輸入和輸出都將被指定為有符號整數(shù)類型,并且不應(yīng)影響您的實現(xiàn),因為無論整數(shù)是有符號的還是無符號的,其內(nèi)部的二進制表示形式都是

    2024年02月03日
    瀏覽(92)
  • (位運算) 1356. 根據(jù)數(shù)字二進制下 1 的數(shù)目排序 ——【Leetcode每日一題】

    (位運算) 1356. 根據(jù)數(shù)字二進制下 1 的數(shù)目排序 ——【Leetcode每日一題】

    難度:簡單 給你一個整數(shù)數(shù)組 arr 。請你將數(shù)組中的元素按照其二進制表示中數(shù)字 1 的數(shù)目升序排序。 如果存在多個數(shù)字二進制中 1 的數(shù)目相同,則必須將它們按照數(shù)值大小升序排列。 請你返回排序后的數(shù)組。 示例 1: 輸入 :arr = [0,1,2,3,4,5,6,7,8] 輸出 :[0,1,2,4,8,3,5,6,7] 解釋

    2024年02月12日
    瀏覽(89)
  • 【每日一題】1253. 重構(gòu) 2 行二進制矩陣

    給你一個 2 行 n 列的二進制數(shù)組: 矩陣是一個二進制矩陣,這意味著矩陣中的每個元素不是 0 就是 1。 第 0 行的元素之和為 upper。 第 1 行的元素之和為 lower。 第 i 列(從 0 開始編號)的元素之和為 colsum[i],colsum 是一個長度為 n 的整數(shù)數(shù)組。 你需要利用 upper,lower 和 colsu

    2024年02月12日
    瀏覽(87)
  • C語言每日一題之整數(shù)求二進制1的個數(shù)

    C語言每日一題之整數(shù)求二進制1的個數(shù)

    今天分享一道題目,用三種方法來求解 二進制1的個數(shù) 方法1 我們的十進制除10和取余數(shù)就可以得到我們每一位的數(shù)字,那我們的二進制也可 以 這是一種方法,另外一種就是我們可以用移位操作符來算 這個方法是不是也是特別妙呢,當然還有更妙的方法,請看?。?! 相信看

    2024年02月15日
    瀏覽(90)
  • C語言每日一題(5):求兩個數(shù)二進制中不同位的個數(shù)

    C語言每日一題(5):求兩個數(shù)二進制中不同位的個數(shù)

    文章主題:求兩個數(shù)二進制中不同位的個數(shù)?? 所屬專欄: C語言每日一題 ?? 作者簡介:每天不定時更新C語言的小白一枚,記錄分享自己每天的所思所想???? 個人主頁: [?]的個人主頁 ???? 最近剛學位操作符以及二進制碼的相關(guān)知識,于是想出了求兩個數(shù)二進制中不同

    2024年02月07日
    瀏覽(848)
  • 【每日一題Day218】LC1091 二進制矩陣中的最短路徑 | BFS

    你駕駛出租車行駛在一條有 n 個地點的路上。這 n 個地點從近到遠編號為 1 到 n ,你想要從 1 開到 n ,通過接乘客訂單盈利。你只能沿著編號遞增的方向前進,不能改變方向。 乘客信息用一個下標從 0 開始的二維數(shù)組 rides 表示,其中 rides[i] = [starti, endi, tipi] 表示第 i 位乘客

    2024年02月08日
    瀏覽(86)
  • 2023/07/02_leetcode每日一題_2.兩數(shù)相加

    給你兩個 非空 的鏈表,表示兩個非負的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲的,并且每個節(jié)點只能存儲 一位 數(shù)字。 請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。 你可以假設(shè)除了數(shù)字 0 之外,這兩個數(shù)都不會以 0 開頭。 示例: 輸入:l1 = [9,9,9,9,9,9

    2024年02月11日
    瀏覽(21)
  • 【LeetCode】67. 二進制求和

    難度:簡單 給你兩個二進制字符串 a 和 b ,以二進制字符串的形式返回它們的和。 示例 1: 示例 2: 提示: 1 = a.length, b.length = 10^4 a 和 b 僅由字符 \\\'0\\\' 或 \\\'1\\\' 組成 字符串如果不是 \\\"0\\\" ,就不含前導(dǎo)零 思路: 從后往前遍歷字符逐個判斷即可 最后考慮是否進位 sum 1 等價于 sum

    2024年02月05日
    瀏覽(85)
  • Leetcode67 二進制求和

    Leetcode67 二進制求和

    給你兩個二進制字符串? a ?和? b ?,以二進制字符串的形式返回它們的和。 ? ? ?代碼 ?

    2024年02月11日
    瀏覽(88)
  • leetcode-顛倒二進制位

    190. 顛倒二進制位 題解: 我們可以使用位運算來解決這個問題。具體步驟如下: 初始化一個變量res為0,用于存儲顛倒后的二進制位。 循環(huán)32次,每次將n的最低位取出,并將其添加到res的最高位上。 將n右移一位,將res左移一位。 返回res作為最終結(jié)果。

    2024年01月25日
    瀏覽(92)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包