AddTwoSum
https://leetcode.com/problems/add-two-numbers/
简单来说就是两个链表存了两个整数, 123 会存为 3->2->1 , 给定了两个链表,让你把他们的和以链表的形式返回。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | class ListNode { int val; ListNode next; ListNode( int x) { val = x; } } class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode head = new ListNode(- 1 ) ; // 链表的头,方便链表存储 ListNode last = head ; boolean flag= false ; // 标记 是否有进位 while (l1!= null || l2!= null ){ int val1 = l1== null ? 0 : l1.val ; // int val2 = l2== null ? 0 : l2.val ; int sum = val1+val2 ; if (flag== true ) sum++ ; if (sum>= 10 ) flag = true ; else flag = false ; last.next = new ListNode(sum% 10 ) ; ; last = last.next; l1=l1== null ? l1: l1.next ; l2=l2== null ? l2: l2.next ; } if (flag== true ) last.next= new ListNode( 1 ) ; // return head.next; } } |
整数加法都是先拿 两个数 的 个位 相加 ,得到一个 2-18 的 数 ,这个数 是 个位的和 , 把 这个和 的 个位留下,作为 得数 的个位。 如果产生了 进位就 记录下来 ,然后 取 两个数 的 十 位, 相加后处理个位的进位,记录十位是否产生进位,以此类推。需要注意的是,两个链表的长度是不定的,像 1 和 1->2 相加 ,当你想取 1 的 十位时 并没有数可取 ,如果当前链表指向空的时候 ,可以当作0来 处理相加 ,而且不再后移。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步