91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++如何實現加一運算

發布時間:2022-03-28 13:39:21 來源:億速云 閱讀:268 作者:iii 欄目:大數據

這篇“C++如何實現加一運算”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C++如何實現加一運算”文章吧。

Plus One 加一運算

Example 1:

Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

Example 3:

Input: digits = [0]
Output: [1]

Constraints:

  • 1 <= digits.length <= 100

  • 0 <= digits[i] <= 9

將一個數字的每個位上的數字分別存到一個一維向量中,最高位在最開頭,我們需要給這個數字加一,即在末尾數字加一,如果末尾數字是9,那么則會有進位問題,而如果前面位上的數字仍為9,則需要繼續向前進位。具體算法如下:首先判斷最后一位是否為9,若不是,直接加一返回,若是,則該位賦0,再繼續查前一位,同樣的方法,知道查完第一位。如果第一位原本為9,加一后會產生新的一位,那么最后要做的是,查運算完的第一位是否為0,如果是,則在最前頭加一個1。代碼如下:

C++ 解法一:

class Solution {
public:
    vector<int> plusOne(vector<int> &digits) {
        int n = digits.size();
        for (int i = n - 1; i >= 0; --i) {
            if (digits[i] == 9) digits[i] = 0;
            else {
                digits[i] += 1;
                return digits;
            }
        }
        if (digits.front() == 0) digits.insert(digits.begin(), 1);
        return digits;
    }
};

Java 解法一:

public class Solution {
    public int[] plusOne(int[] digits) {
        int n = digits.length;
        for (int i = digits.length - 1; i >= 0; --i) {
            if (digits[i] < 9) {
                ++digits[i];
                return digits;
            }
            digits[i] = 0;
        }
        int[] res = new int[n + 1];
        res[0] = 1;
        return res;
    }
}

我們也可以使用跟之前那道 Add Binary 類似的做法,將 carry 初始化為1,然后相當于 digits 加了一個0,處理方法跟之前那道題一樣,參見代碼如下:

C++ 解法二 :

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        if (digits.empty()) return digits;
        int carry = 1, n = digits.size();
        for (int i = n - 1; i >= 0; --i) {
            if (carry == 0) return digits;
            int sum = digits[i] + carry;
            digits[i] = sum % 10;
            carry = sum / 10;
        }
        if (carry == 1) digits.insert(digits.begin(), 1);
        return digits;
    }
};

Java 解法二 :

public class Solution {
    public int[] plusOne(int[] digits) {
        if (digits.length == 0) return digits;
        int carry = 1, n = digits.length;
        for (int i = digits.length - 1; i >= 0; --i) {
            if (carry == 0) return digits;
            int sum = digits[i] + carry;
            digits[i] = sum % 10;
            carry = sum / 10;
        }
        int[] res = new int[n + 1];
        res[0] = 1;
        return carry == 0 ? digits : res;
    }
}

以上就是關于“C++如何實現加一運算”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

三台县| 红河县| 刚察县| 定陶县| 营口市| 沅陵县| 合川市| 贵德县| 达孜县| 舞阳县| 宁陵县| 德州市| 呼玛县| 家居| 尼木县| 渑池县| 多伦县| 芒康县| 华安县| 永川市| 商南县| 专栏| 游戏| 通河县| 霍州市| 壶关县| 抚松县| 洪洞县| 页游| 河间市| 焉耆| 安康市| 巴青县| 光山县| 丰原市| 芦山县| 霍邱县| 隆德县| 海阳市| 宾川县| 永福县|