链表 - wenzhoullq/leetcode GitHub Wiki
模板
这种head!=null&&head.next!=null模板通用于绝大部分的链表题
while(head!=null&&head.next!=null){}
链表反转
分析
这里只记录迭代法,递归法就不考虑了;属于head不移动
模板
这个模板的小细节在于,head是固定不动的,都是head.next在移动,然后head和head.next.next连接;当然别的题目情况下,head还是会移动的,但是也是基于这个模板改造的
ListNode dummy=new ListNode(),p=dummy;
dummy.next=head;//容易遗忘
while(head!=null&&head.next!=null){
ListNode temp=head.next,next=temp.next;
temp.next=p.next;
p.next=temp;
head.next=next;
//根据题意移动p
}
return dummy.next;
题目
去重
while(head!=null&&head.next!=null){
while(head!=null&&head.next!=null&&head.val==head.next.val) head.next=head.next.next;
}
题目
其他
因为题目过少,将之归类到一起
题目
237. 删除链表中的节点 奇怪的题目
快慢指针
if(head==null||head.next==null) return false;
ListNode quick=head.next,slow=head;
while(quick!=null&&quick.next!=null){
if(quick==slow) return true;
quick=quick.next.next;
slow=slow.next;
}
题目
综合题
运用了如上的知识点