今天开个新坑,做LeetCode刷题,目的是巩固下Java基础的用法,以及熟悉Java语法,能用Java实现大部分已会算法,然后最终能用Java开发出实际应用型软件。
emm,意图明显,本着就业和以后的考研去的。
python也会持续的跟进,明年3月份之前,CSAPP,java,python,视觉处理这些希望都能到达一个新的高度。新的起点吧!加油。
###思路
Java第一次用啊……不咋熟,不过和C++用法上还是很相似的,
①这个题一开始我就正常写,没想到爆了个int上限,(我先把两个链表的和求出来在给新的listnode 逐位插入)。
②然后就搞了一下BigInter,寻思这下没跑了,结果头文件没有设置BigInter,
③合着就是让你写个进位的逻辑呗。
④思路就是两链表都有当前位时,逐位求和,重置进位位,next
⑤只有单链表存在时,那就是进位位和当前位求和,重置进位位,next
⑥极端情况
9999999
1
如果最后剩了一个进位,那就在加入一个节点即可。
没啥难度,我还错那么多发,我是fv
###代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode ans = new ListNode(0);
ListNode ret = ans;
int bits=0;
while(l1!=null&&l2!=null){
int tmp=(l1.val+l2.val+bits);
if(tmp>=10)bits=1;
else bits=0;
tmp%=10;
ans.next = new ListNode(tmp);
ans=ans.next;
l1=l1.next;
l2=l2.next;
}
while(l1!=null) {
int tmp = l1.val + bits;
if (tmp >= 10) {
bits = 1;
} else bits = 0;
tmp %= 10;
ans.next = new ListNode(tmp);
ans = ans.next;
l1 = l1.next;
}
while(l2!=null){
int tmp=l2.val+bits;
if(tmp>=10){
bits=1;
}
else bits=0;
tmp%=10;
ans.next = new ListNode(tmp);
ans=ans.next;
l2=l2.next;
}
if(bits==1)
ans.next=new ListNode(1);
return ret.next;
}
}