问题描述:
代码:
/**
* 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 head = null, tail = null;
int add=0;
while(add>0||l1!=null||l2!=null){
int n1=l1!=null?l1.val:0;
int n2=l2!=null?l2.val:0;
int val=n1+n2+add;
if(head==null){
head=tail=new ListNode(val%10);
}else{
tail.next=new ListNode(val%10);
tail=tail.next;
}
if(l1==null&&l2==null)
val=add;
if(l1!=null)
l1=l1.next;
if(l2!=null)
l2=l2.next;
add=val/10;
}
return head;
}
}
思路:
新建一个哨兵节点 来记录初试的head,然后利用head进行加减运算;
问题描述:
代码:
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode detectCycle(ListNode head) {
Map<ListNode,Integer> hx = new HashMap<>();
int pos=-1;
while(head!=null){
++pos;
if(!hx.containsKey(head))
hx.put(head,pos);
else
return head;
head=head.next;
}
return null;
}
}
思路:
HashMap或者HashSet;