989-数组形式的整数加法
生活随笔
收集整理的這篇文章主要介紹了
989-数组形式的整数加法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
Weekly Contest 123的 數組形式的整數加法:
對于非負整數 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提示:
解題思路
此題解題思路類似兩數相加,而且leetcode官方也有此題的解答。需要注意的是需要先將兩個入參轉換成鏈表后,按照兩數相加的解題步驟處理即可。
實現代碼
/*** 989. 數組形式的整數加法* @param A* @param K* @return*/public List<Integer> addToArrayForm(int[] A, int K) {List<Integer> result=new ArrayList<>();char[] chars=String.valueOf(K).toCharArray();int times=chars.length>A.length?chars.length:A.length;//將K轉成鏈表List<Integer> kList=new LinkedList<>();for(int i=0;i<chars.length;i++){kList.add(Integer.valueOf(String.valueOf(chars[i])));}while(kList.size()<times){((LinkedList<Integer>) kList).addFirst(0);}//將A轉換成鏈表List<Integer> aList=new LinkedList<>();for(int i=0;i<A.length;i++){aList.add(A[i]);}while(aList.size()<times){((LinkedList<Integer>) aList).addFirst(0);}int carry=0;//進位for(int i=times-1;i>=0;i--){//逆序遍歷鏈表int k=kList.get(i);int a= aList.get(i);int num=k+a+carry;if(num>=10){//相加大于0則進位carry=num/10;num=num%10;}else{carry=0;}//頭插法,將每一位的運算放在數組首位result.add(0,num);}if(carry>0){//最后一位是否存在進位result.add(0,carry);}return result;}總結
以上是生活随笔為你收集整理的989-数组形式的整数加法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud Gateway
- 下一篇: 多层 UIScrollView 嵌套滚动