加一,为什么错误的答案?

时间:2015-08-22 05:20:33

标签: c++

  

正确的情况是将第17行更改为" if(one> 0)",   但是当我使用" if(one = 1)"时,我不明白为什么会出错。   当输入为0时,一个为0,输出如何变为[1,1]。

class Solution {
public:
    /**
     * @param digits a number represented as an array of digits
     * @return the result
     */
    vector<int> plusOne(vector<int>& digits) {
        // Write your code here
        vector<int> res(digits.size(), 0);
            int sum = 0;
            int one = 1;
            for (int i= digits.size()-1; i >= 0 ; i--) {
                sum = one + digits[i];
                one = sum / 10;
                res[i] = sum % 10;
            }
            ***if (one = 1) {***
            res.insert(res.begin(), one);
            }
            return res;
    }
};

3 个答案:

答案 0 :(得分:4)

=是赋值运算符,它始终返回指定的值。 因此,对于非零值的赋值,条件将始终为真,在本例中为1。 如果您正在寻找相等性检查,请使用==运算符。

答案 1 :(得分:1)

"="是c和c ++中的赋值运算符。您需要比较运算符才能在代码中进行比较,因此您需要使用"=="

答案 2 :(得分:0)

if (one == 1) {

if (one = 1) {

我认为if (one > 0在任何情况下都更具风格。