989. Add to Array-Form of Integer
问题:
给定一个数组A为某个数的各位数,和数字K,求给A组成的数字+K,所得的数字也像A做成数组返回。
Example 1: Input: A = [1,2,0,0], K = 34 Output: [1,2,3,4] Explanation: 1200 + 34 = 1234 Example 2: Input: A = [2,7,4], K = 181 Output: [4,5,5] Explanation: 274 + 181 = 455 Example 3: Input: A = [2,1,5], K = 806 Output: [1,0,2,1] Explanation: 215 + 806 = 1021 Example 4: Input: A = [9,9,9,9,9,9,9,9,9,9], K = 1 Output: [1,0,0,0,0,0,0,0,0,0,0] Explanation: 9999999999 + 1 = 10000000000 Note: 1 <= A.length <= 10000 0 <= A[i] <= 9 0 <= K <= 10000 If A.length > 1, then A[0] != 0 |
解法:
从个位往十位,百位,千位,
每次求K的各位数值:K%10,直接加给A[j]
预留下的K/10,为下一位计算原数。
对于加得之和,用flag记录进位,如果有进位,直接加给K。
即K=K/10+flag
A[j]则只保留个位,
即A[j]=A[j]%10
⚠️注意,
这里如果A的位数不够,
判断 j<0 的时候
需要insert(0)到A的开头A.begin()
同时把要处理的 j 置为 0。
代码参考:
1 class Solution { 2 public: 3 vector<int> addToArrayForm(vector<int>& A, int K) { 4 int flag=0; 5 int j=A.size()-1; 6 while(K>0){ 7 if(j<0){ 8 A.insert(A.begin(),0); 9 j=0; 10 } 11 A[j]+=K%10; 12 flag=A[j]/10; 13 A[j]=A[j]%10; 14 K=K/10+flag; 15 j--; 16 } 17 return A; 18 } 19 };
分类:
leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!