题目
URL:https://leetcode.com/problems/add-two-numbers/
解法
没什么特殊的解法,按位相加即可。
注意点:
1、l1 和 l2 不一样长。
2、最终的进位。
public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode l3 = new ListNode(-1); ListNode tl3 = l3; int plus = 0; while (l1 != null || l2 != null || plus == 1) { int value = (l1 != null ? l1.val : 0) + (l2 != null ? l2.val : 0) + plus; if (value >= 10) { plus = 1; value -= 10; } else { plus = 0; } ListNode next = new ListNode(value); tl3.next = next; tl3 = tl3.next; if (l1 != null) l1 = l1.next; if (l2 != null) l2 = l2.next; } return l3.next; }
单层循环,时间复杂度O(max(l1.length, l2.length)),运行时间约为 50 ms。
总结
胆大心细。无论是美女还是题目,你都可以得手。