go語言題解LeetCode66加一示例詳解
題目描述
原題鏈接 :
給定一個由 整數(shù) 組成的 非空 數(shù)組所表示的非負(fù)整數(shù),在該數(shù)的基礎(chǔ)上加一。
最高位數(shù)字存放在數(shù)組的首位, 數(shù)組中每個元素只存儲單個數(shù)字。
你可以假設(shè)除了整數(shù) 0 之外,這個整數(shù)不會以零開頭。
示例 1:
輸入:digits = [1,2,3] 輸出:[1,2,4] 解釋:輸入數(shù)組表示數(shù)字 123。
示例 2:
輸入:digits = [4,3,2,1] 輸出:[4,3,2,2] 解釋:輸入數(shù)組表示數(shù)字 4321。
示例 3:
輸入:digits = [0] 輸出:[1]
提示:
1 <= digits.length <= 100
0 <= digits[i] <= 9
思路分析
對于一般的數(shù)字,直接在末位加一即可,
本題特殊的兩個點:
若加一之后的值為10,需要進(jìn)一位
若數(shù)字為類似999 ,加一之后需要多一位數(shù)。使用insert()來實現(xiàn), insert函數(shù) : vec.insert(begin()+i ,a) 在第i個元素插入a
AC 代碼
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int size = digits.size();
if(digits[size-1] != 9) //若末位不等于9,正常加一
{
++digits[size-1];
}
else //若末位等于9,加一等于0
{
digits[size-1] = 0;
for(int i = size - 1; i >0; --i) //若加完一后若等于0,下一位要進(jìn)一 如869
{
if(digits[i] == 0)
{
digits[i-1] = (digits[i-1] + 1) % 10;
}
else
break; //若某一位是數(shù)不需要進(jìn)一,跳出循環(huán)
}
if(digits[0] == 0) //若到最后最高位也等于0,需要多一位數(shù) 如99 + 1 此時為答案為00,進(jìn)行一下操作
{
digits.insert(digits.begin(),1); //在最高位插入1
}
}
return digits;
}
};
小結(jié)
題目不長,但是還是有點拗口的感覺,首先要先弄明白題意,然后正常的思路下考慮進(jìn)位的溢出等就可以解出來。
JavaScript 66題
代碼
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
//先遍歷 從右向左
for(let i = digits.length-1;i>=0;i--){
if(digits[i] !==9){
digits[i]++
return digits;
}else{
// 是 9
digits[i] = 0
}
}
let result = [1,...digits];
/* let result = [1].concat(digits);
digits.unshift(1);
*/
return result;
};
python3 循環(huán)判斷
分析:
這是一道基礎(chǔ)的屬組倒序查找的問題,唯一需要關(guān)注的就是類似[9,9]的場景,循環(huán)后需要看是否需要進(jìn)位。
如果需要進(jìn)位,則在數(shù)組0位置插入1,才能保證接過的正確性。
class Solution:
def plusOne(self, digits):
count = 1
for i in range(len(digits) - 1, -1, -1):
count, digits[i] = divmod(digits[i] + count, 10)
if count == 0:
break
if count:
digits.insert(0,count)
return digitsJAVA解決進(jìn)位問題
解題思路
倒著看,不為9,直接加1,返回:為9的話,需要進(jìn)位,變成0即可;
特殊情況 9 99 等,一直為9的,結(jié)果肯定是10 ,100 數(shù)組長度加1 ,首位為1
代碼
class Solution {
public int[] plusOne(int[] digits) {
int length = digits.length;
// 最后一個不為九的數(shù)加1,為九的變0,9 99 單獨處理
for (int i = length - 1; i >= 0; i--) {
if(digits[i] != 9){
digits[i] = digits[i] + 1;
return digits;
}else {
digits[i] = 0;
}
}
int[] ints = new int[length + 1];
ints[0] = 1;
return ints;
}
}
以上就是go語言題解LeetCode66加一示例詳解的詳細(xì)內(nèi)容,更多關(guān)于go題解LeetCode66加一的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
深入探索Go語言中的高效數(shù)據(jù)結(jié)構(gòu)堆
堆,作為一種基本的數(shù)據(jù)結(jié)構(gòu),以其在優(yōu)先隊列和排序算法中提供高效解決方案的能力而聞名。在本文中,我們將深入探討堆的內(nèi)部工作原理,包括其特性、實現(xiàn)細(xì)節(jié)以及在現(xiàn)代編程中的應(yīng)用2008-06-06
解決Golang小數(shù)float64在實際工程中加減乘除的精度問題
這篇文章主要介紹了解決Golang小數(shù)float64在實際工程中加減乘除的精度問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
GO中?分組聲明與array,?slice,?map函數(shù)
這篇文章主要介紹了GO中?分組聲明與array,slice,map函數(shù),Go語言中,同時聲明多個常量、變量,或者導(dǎo)入多個包時,可采用分組的方式進(jìn)行聲明,下面詳細(xì)介紹需要的小伙伴可以參考一下2022-03-03
Go語言同步等待組sync.WaitGroup結(jié)構(gòu)體對象方法詳解
這篇文章主要為大家介紹了Go語言同步等待組sync.WaitGroup結(jié)構(gòu)體對象方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

