力扣(LeetCode)整数形式的整数加法 个人题解
2024-09-01 17:03:58
对于非负整数 X
而言,X
的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231
,那么其数组形式为 [1,2,3,1]
。
给定非负整数 X
的数组形式 A
,返回整数 X+K
的数组形式。
示例 1:
输入:A = [1,2,0,0], K = 34
输出:[1,2,3,4]
解释:1200 + 34 = 1234
解释 2:
输入:A = [2,7,4], K = 181
输出:[4,5,5]
解释:274 + 181 = 455
示例 3:
输入:A = [2,1,5], K = 806
输出:[1,0,2,1]
解释:215 + 806 = 1021
示例 4:
输入:A = [9,9,9,9,9,9,9,9,9,9], K = 1
输出:[1,0,0,0,0,0,0,0,0,0,0]
解释:9999999999 + 1 = 10000000000
提示:
1 <= A.length <= 10000
0 <= A[i] <= 9
0 <= K <= 10000
- 如果
A.length > 1
,那么A[0] != 0
这题做法的思路是比较简单的,逐位相加,记得设置进位,从右到左最后得到结果。
我这里使用了原地的vector来做,所以内存使用上比较少,但是逻辑判断就比较麻烦一些了。如果K的位数大于数组的位数还得再进行处理。
代码如下:
class Solution {
public:
vector<int> addToArrayForm(vector<int>& A, int K) {
int cf=;
for(int i=A.size()-; i>=; i--) {
int tmp=K%;
int newnum = tmp+A[i]+cf;
if(newnum >= ) {
newnum-=;
cf=;
} else {
cf=;
}
A[i]= newnum;
K/=;
}
while (K!=) {
A.insert(A.begin(),K+cf);
cf = (K+cf)/;
K/=;
}
if (cf!=)
A.insert(A.begin(),cf);
return A;
}
};
多说一句,题解区有更巧的方法,但是思路本质是一样的 戳->https://leetcode-cn.com/problems/add-to-array-form-of-integer/solution/shu-zu-xing-shi-de-zheng-shu-jia-fa-by-leetcode/
最新文章
- PJAX实现
- Spark On YARN使用时上传jar包过多导致磁盘空间不够。。。
- java 获取classpath下文件多种方式
- node.js 基础学习笔记1
- 判断JavaScript对象为null或者属性为空
- 遍历josn的三种方式
- Android实现透明的颜色效果
- label
- div+css3实现的小丸子和爷爷
- 修改UI中的值,无反应解决办法
- Excel教程(8) - 财务函数
- Linux下安装MQ
- C#中USB转串口的拔插捕获
- 20165305 《网络对抗技术》 Kali安装
- Python 嘉宾列表问题
- windows批量修改文件后缀名
- Linux下发送邮件
- IEEE 802.1X标准
- ESXI 迁移至KVM (V2V迁移)
- rest-framework之分页器
热门文章
- netty中Pipeline的ChannelHandler执行顺序案例详解
- SpringBoot 开发案例之参数传递的正确姿势
- Intellij idea 一个窗口打开多模块并添加依赖
- FreeSql 已支持 .NetFramework 4.0、ODBC 访问
- mp-vue实现小程序回顶操作踩坑,wx.pageScrollTo使用无效填坑
- ElasticSearch - ElasticSearch和kinaba的简单使用
- spring cloud Ribbon的使用和实现原理
- Jenkins 2.60.x 2种发送邮件方式
- Everything 信息泄露
- Django学习day7——简单的使用数据库和模型