每日一练 bm2

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述对比一下
晕 虚拟头节点没有定义在 头节点之前
在这里插入图片描述在这里插入图片描述在这里插入图片描述晕 又是这儿
在这里插入图片描述在这里插入代码片

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @param m int整型 
     * @param n int整型 
     * @return ListNode类
     */
    public ListNode reverseBetween (ListNode head, int m, int n) {
        // write code here
        ListNode newhead=new ListNode(-1);
        newhead.next=head;
        ListNode prev=newhead;
        for(int i=0;i<m-1;i++){
            prev=prev.next;
        }
        ListNode leftNode=prev.next;
        ListNode rightNode=prev;
        for(int i=0;i<n-m+1;i++)
        {
            rightNode=rightNode.next;
        }
        prev.next=null;
        ListNode cur=rightNode.next;
        rightNode.next=null;
        reverseList(leftNode);
        prev.next=rightNode;
        leftNode.next=cur;
        return newhead.next; 
    }
    public void reverseList(ListNode head){
        ListNode cur=null;
        ListNode prev=head;
        while(prev!=null){
            ListNode prev_next=prev.next;
            prev.next=cur;
            cur=prev;
            prev=prev_next;

        }
    }
}

在这里插入图片描述参考思路
补充:
1.注意虚拟头节点的定义
2.newhead.next=head;
3.注意链表反转时 cur的指向 prev.next=cur;(修正 prev的指向)
在这里插入图片描述bm1
在这里插入图片描述在这里插入图片描述在这里插入图片描述感觉不加边际条件也还行?
为什么返回cur呢?
哦 此时prev=null了
返回 null
cur前一节点

![在这里插入代码片](https://img-blog.csdnimg.cn/92ca376150524c56821a5d35a3c2ca9b.png)

在这里插入图片描述在这里插入代码片

![在这里插入代码片](https://img-blog.csdnimg.cn/ca5e8d80d988463d8c534bc90ab04fa1.png)

import java.util.*;
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
if(head==null)
{return null;}
        if(head.next==null){return head;}
        ListNode prev=head;
        ListNode cur=null;
        while(prev!=null)
        {
            ListNode prev_next=prev.next;
            prev.next=cur;
            cur=prev;
            prev=prev_next;
        }return cur;  }
}

在这里插入图片描述
在这里插入图片描述bm4
先看源代码

public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
    ListNode dummyhead=new ListNode(-1);
        ListNode last=dummyhead;
        if(list1==null)
        {return  list2;}
        if(list2==null){
            return list1;
        }
        while(list1!=null&&list2!=null)
        {
            if(list1.val<=list2.val)
            {
                last.next=list1;
                last=list1;
                list1=list1.next;
                
            }else{
                last.next=list2;
                last=list2;
              list2=list2.next;
            }
            if(list1==null)
            {last.next=list2;}
            if(list2==null)
            {last.next=list1;}
            }return dummyhead.next;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值