goal 1
A
add two numbers
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode ret = new ListNode(0);
ListNode res = ret;
ListNode p1 = l1;
ListNode p2 = l2;
int flag = 0;
while(p1 != null && p2 != null){
res.val = p1.val + p2.val;
if(flag == 1){
res.val = res.val + 1;
flag = 0;
}
if(res.val >= 10){
res.val = res.val - 10;
flag = 1;
}
if(p1.next != null || p2.next != null || flag == 1 ){
res.next = new ListNode(0);
res = res.next;
}
p1 = p1.next;
p2 = p2.next;
}
if(flag == 1){
res.val = 1;
flag = 0;
}
while(p1 != null){
res.val = p1.val + res.val;
if(res.val >= 10){
res.val = res.val -10;
flag = 1;
}
if(p1.next != null || flag == 1){
res.next = new ListNode(0);
res = res.next;
if(flag == 1){
res.val = 1;
flag = 0;
}
}
p1 = p1.next;
}
while(p2 != null){
res.val = p2.val + res.val;
if(res.val >= 10){
res.val = res.val -10;
flag = 1;
}
if(p2.next != null || flag == 1){
res.next = new ListNode(0);
res = res.next;
if(flag == 1){
res.val = 1;
flag = 0;
}
}
p2 = p2.next;
}
return ret;
}
}
这个题目比较简单,但是做的时候还是有些情况没有考虑到,有如下几点:
- 在第一次同步遍历完两条链表的时候,之后没有考虑最后一次如果进位的情况
- 没有考虑单条遍历最后一步的进位情况
得到教训,以后做题的时候还是先把题目仔细想一遍再动手,最好画出来。
R go语言介绍与hello world
go tutorial这一系列介绍了go
什么是go
go是google推出一种静态强类型的编译型语言。
为何选择go?:
- 天生支持并发, 编写并发很简单, go通过Goroutines和channels来完成并发
- go是编译型语言,源码会被编译成机器码运行,效率比解释性语言高很多。
- go文档简单
- go编译器支持静态链接,所有依赖库都会被链接到为一个二进制可执行文件,部署方便,移植性也还不错。
安装
按照步骤一步一步安装的
以上就是这篇文章的总结~
网友评论