这篇博客持续更新,博主力扣刷题到哪更新到哪。。。希望大家支持
21:合并两个有序的单链表(21)
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode newhead= new ListNode(0);
ListNode cur=newhead;
while(l1 != null && l2 !=null){//l1 l2 都不为空
if(l1.val < l2.val){
cur.next=new ListNode(l1.val);
l1=l1.next;
cur=cur.next;
}else {//l1.val >= l2.val
cur.next = new ListNode(l2.val);
cur=cur.next;
l2=l2.next;
}
}
//当l1 l2任意一个为空
if(l1==null){
cur.next=l2;
}else{
cur.next=l1;
}
return newhead.next;
}
}
删除排序链表中的重复元素(83)
非递归解法
class Solution {
public ListNode deleteDuplicates(ListNode head) {
//判断头节点是否为空
if(head == null || head==null){
return head;
}
ListNode cur=head;
ListNode pre=head;
ListNode check=head.next;
while (cur!=null){
while(check!= null){
if(check.val == cur.val){
pre.next=check.next;
check=check.next;
}else{
pre=pre.next;
check=check.next;
}
}
if (cur.next==null){
break;
}
cur=cur.next;
pre=cur;
check=cur.next;
}
return head;
}
}
递归解法
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null || head.next == null){
return head;
}
head.next = deleteDuplicates(head.next);
if(head.val == head.next.val)
head = head.next;
return head;
}
}
找到两个单链表相交起始结点(160)
快慢指针法
在这里插入代码片