第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

leetcode66題,最簡單的思路,某個時候沒法通過

leetcode66題,最簡單的思路,某個時候沒法通過

C++
慕的地10843 2018-10-30 14:14:09
用的C++ class Solution { public:     vector<int> plusOne(vector<int>& digits) {         const int n = digits.size();         vector<int> result;         long int num=0;         for(int i = 0;i < n;i++){             num += digits[i]*pow(10,n-i-1);         }         num++;         while(num > 0){             int i = num % 10;             num /= 10;             result.push_back(i);         }         reverse(result.begin(),result.end());         return result;     } };輸入: [6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3]輸出: [6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,4,0,9]預期: [6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,4]不一樣,通過109個例子中的79個
查看完整描述

1 回答

?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

for循環(huán)里改成這個num += digits[i]*(long int)pow(10,n-i-1);pow默認返回int,丟失精度;
另外這題你這么做AC不了的應該,給的數(shù)據(jù)范圍已經(jīng)超long long了,你應該模擬數(shù)學加法運算去做。這是我AC的代碼
class Solution {
public:
vector plusOne(vector& digits) {
int n = digits.size();
if(0 == n) return vector{0};
vector ans;
int c = 1; //進位
for(int i = n - 1; i >= 0; --i)
{
ans.push_back(digits[i] + c);
c = ans[ans.size() - 1] / 10;
ans[ans.size() - 1] %= 10;
}
if(1 == c)
{//在首位加1
ans.push_back(1);
}
reverse(ans.begin(), ans.end());
return ans;
}
};


查看完整回答
反對 回復 2018-11-03
  • 1 回答
  • 0 關注
  • 649 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號