问题描述:
代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
int lenA=getLength(headA);
int lenB=getLength(headB);
int c=lenA>=lenB?lenA-lenB:lenB-lenA;
while(lenA>lenB){
headA=headA.next;
lenA--;
}
while(lenA<lenB){
headB=headB.next;
lenB--;
}
while(headA!=null&&headB!=null){
if(headA==headB)
return headA;
else
{
headA=headA.next;
headB=headB.next;
}
}
return null;
}
public int getLength(ListNode nodea){
int count=0;
while(nodea!=null){
count++;
nodea=nodea.next;
}
return count;
}
}
思路:
让两个链表长度相等 或者 hashSet
问题描述:
代码:
/**
* 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 deleteDuplicates(ListNode head) {
if(head==null)
return null;
ListNode dummy = new ListNode(0,head);
ListNode curr = dummy;
while(curr.next!=null&&curr.next.next!=null){
if(curr.next.val==curr.next.next.val){
int t = curr.next.val;
while(curr.next!=null&&t==curr.next.val){
curr.next=curr.next.next;
}
}else{
curr=curr.next;
}
}
return dummy.next;
}
}
思路: