日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2. Add Two Numbers

發布時間:2023/11/29 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2. Add Two Numbers 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

直接用一個carry記錄進位就可以

?

?

?

?

1 //NEW 2 class Solution { 3 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 4 ListNode root = new ListNode(0); 5 return addTwoNumbers(l1, l2, root); 6 } 7 public ListNode addTwoNumbers(ListNode l1, ListNode l2, ListNode root){ 8 int carry = 0; 9 ListNode dummy = root; 10 while(l1 != null || l2!=null){ 11 int x = (l1 != null) ? l1.val : 0; 12 int y = (l2 != null) ? l2.val : 0; 13 dummy.next = new ListNode((carry + x + y)%10); 14 dummy = dummy.next; 15 carry = (carry + x + y)/10; 16 if(l1!=null) { 17 l1 = l1.next; 18 } 19 if(l2!=null) { 20 l2 = l2.next; 21 } 22 } 23 if (carry > 0) { 24 dummy.next = new ListNode(carry); 25 } 26 return root.next; 27 } 28 } 29 30 31 //Old 32 class Solution { 33 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 34 String str1 = "", str2 = ""; 35 while(l1 != null) { 36 str1 += Integer.toString(l1.val); 37 l1 = l1.next; 38 } 39 while(l2 != null) { 40 str2 += Integer.toString(l2.val); 41 l2 = l2.next; 42 } 43 char[] str11 = str1.toCharArray(); 44 char[] str21 = str2.toCharArray(); 45 char[] res = new char[Math.max(str11.length, str21.length) + 1]; 46 for(int i = 0; i < res.length; i++) { 47 res[i] = 'a'; 48 } 49 res[res.length - 1] = '0'; 50 int record = 0; 51 for(int i = 0; i < res.length; i++) { 52 if(i < str11.length && i < str21.length) { 53 if(str11[i]-'0' + str21[i]-'0' + record >= 10) { 54 res[i] = (char)('0'+ ((str11[i]-'0') + (str21[i]-'0') +record) % 10); 55 record = 1; 56 }else { 57 res[i] = (char)('0'+ (str11[i]-'0' + str21[i]-'0' +record)); 58 record = 0; 59 } 60 61 }else if(i < str21.length) { 62 if(str21[i]-'0' +record >= 10) { 63 res[i] = (char)('0'+ (str21[i]-'0' +record) % 10); 64 record = 1; 65 }else { 66 res[i] = (char)('0'+ (str21[i]-'0' +record)); 67 record = 0; 68 } 69 }else if(i < str11.length){ 70 if(str11[i]-'0' +record >= 10) { 71 res[i] = (char)('0'+ (str11[i]-'0' +record) % 10); 72 record = 1; 73 }else { 74 res[i] = (char)('0'+ (str11[i]-'0' +record)); 75 record = 0; 76 } 77 }else { 78 if(record == 1) { 79 res[i] = '1'; 80 } 81 } 82 } 83 ListNode node = new ListNode(res[0]-'0'); 84 ListNode head = node; 85 for(int i = 1; i < res.length; i++) { 86 if(i != res.length - 1 || res[i] == '1') { 87 node.next = new ListNode(res[i]-'0'); 88 node = node.next; 89 } 90 91 } 92 return head; 93 } 94 }

?

轉載于:https://www.cnblogs.com/goPanama/p/9582440.html

總結

以上是生活随笔為你收集整理的2. Add Two Numbers的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。