LeetCode

xiaoxiao2023-03-27  20

题目简述

使用链表逆序表达数字(2->3->4=432),每个节点相加求和,并输出链表。

代码

class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int carry = 0 ; ListNode result = new ListNode(0); ListNode rear = result; int sum = 0; int num = 0; for(int i=0; l1!= null || l2!= null||carry != 0; i++){ if(l1!=null && l2!=null){ sum = l1.val + l2.val; l1 = l1.next; l2 = l2.next; }else if(l1 == null && l2!=null){ sum = l2.val; l2 = l2.next; }else if(l2 == null && l1!=null){ sum = l1.val; l1 = l1.next; }else if(l1 == null && l2 == null){ sum = 0; } sum= sum + carry; num = sum % 10; carry = sum / 10; ListNode newNode = new ListNode(num); rear.next = newNode; rear = rear.next; } return result.next; } }

忘记的知识点

链表循环尾插入: ListNode result = new ListNode(0);//结果链表 ListNode rear = result;//指向链表表尾的指针 rear.next = newNode;//插入新的节点 rear = rear.next;//指针向后移一位注意else if的重要性:在这段代码中,因为每个if都使指针后移一位,如果不加else if(直接使用if),会导致下一次判断的是后移后的值,而这是不正确的求余数和商之前,应该先求和,因为思路不够清晰,导致在这个bug花费了很多时间

碎碎念

今天看到美室友汐发了一张图:都不要做工具人。我的感触很深,因为在学习写代码的过程中,我深刻的认识到循环对于机器来说是多么的容易,那么作为人类,我们最应该避免的应该就是做着那些容易被机器取代的工作。简单、无意义的重复,没有任何技巧,那么这份工作总有一天会轻而易举的被机器取代,这个过程也许发生的悄无声息,但这背后有无数工人的叹息与无奈。所以,从事创造性劳动是十分有必要的,千万不能因为一时懒惰不舍得动脑,而为日后的生活埋下隐患。

转载请注明原文地址: https://www.6miu.com/read-4988243.html

最新回复(0)