go语言题解LeetCode66加一示例详解
目录
题目描述思路分析AC 代码小结JavaScript 66题代码python3 循环判断分析:JAVA解决进位问题解题思路代码题目描述
原题链接 :
66. 加一
(资料图)
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例1:
输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。
示例2:
输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0] 输出:[1]
提示:
1 <= digits.length <= 100
0 <= digits[i] <= 9
思路分析
对于一般的数字,直接在末位加一即可,
本题特殊的两个点:
若加一之后的值为10,需要进一位
若数字为类似999 ,加一之后需要多一位数。使用insert()来实现, insert函数 : vec.insert(begin()+i ,a) 在第i个元素插入a
AC 代码
class Solution { public: vectorplusOne(vector & 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,下一位要进一 如869 { if(digits[i] == 0) { digits[i-1] = (digits[i-1] + 1) % 10; } else break; //若某一位是数不需要进一,跳出循环 } if(digits[0] == 0) //若到最后最高位也等于0,需要多一位数 如99 + 1 此时为答案为00,进行一下操作 { digits.insert(digits.begin(),1); //在最高位插入1 } } return digits; } };
小结
题目不长,但是还是有点拗口的感觉,首先要先弄明白题意,然后正常的思路下考虑进位的溢出等就可以解出来。
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 循环判断
分析:
这是一道基础的属组倒序查找的问题,唯一需要关注的就是类似[9,9]的场景,循环后需要看是否需要进位。
如果需要进位,则在数组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 digits
JAVA解决进位问题
解题思路
倒着看,不为9,直接加1,返回:为9的话,需要进位,变成0即可;
特殊情况 9 99 等,一直为9的,结果肯定是10 ,100 数组长度加1 ,首位为1
代码
class Solution { public int[] plusOne(int[] digits) { int length = digits.length; // 最后一个不为九的数加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加一示例详解的详细内容,更多关于go题解LeetCode66加一的资料请关注脚本之家其它相关文章!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?