剑指 Offer 25. 合并两个排序的链表

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:

0 <= 链表长度 <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

先设置一个最小的头结点,来代替最小值,这样不论l1还是l2哪个头结点最小
都可以把节点添加到这个新链表中
l1 或者 l2 只要有一个没有遍历完就继续遍历
因为l1 和 l2 都是有序的链表,如果遍历完了 l1,那么剩下的 l2部分值 肯定也是有序的
而因为新链表也是有序的,所以剩下的没有遍历完的链表值,肯定是小于等于新链表的值的,
所以直接加在新链表后边就可以了。
l1 和 l2 分别指向两个链表的当前节点。
剩下的链表的值,直接加入到新链表的结尾,
如果两个链表同时遍历完,那么l2就是null,即cur.next为null
因为我们自定义了一个头节点,所以返回dum.next

算法相当于从前向后依次有序地摘下 l1 和 l2 值,加入到新链表中。

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode dum = new ListNode(0), cur = dum;
        while(l1 != null && l2 != null) {
            if(l1.val < l2.val) {
                cur.next = l1;
                l1 = l1.next;
            }
            else {
                cur.next = l2;
                l2 = l2.next;
            }
            cur = cur.next;
        }
        if(l1 != null){
            cur.next = l1;
        }else{
            cur.next = l2;
        }
        return dum.next;
    }
}

我们都知道,长期坚持学习,会给自己带来很大的改变,但是,大脑中的奖励系统,决定了我们跟倾向于去选择眼下的快乐。

那么怎么在面对诱惑的时候,选择更加“长远的快乐”呢?

改变自己的想法。当你在早晨6点醒来,不想起床想再睡一会儿的时候,可以想一想。如果再睡过去,那么就可能不是睡一会儿了,睡的时间长了,那么你当天的任务就无法完成,无法完成任务你就会在晚上感觉到懊悔与痛苦。

两个选择,睡懒觉会痛苦,起床也会痛苦。

那么这两个痛苦相比,哪个更加有意义呢?

起床去学习的痛苦更有意义,因为至少完成了当天的任务,学习到了知识,收获了成长。

这样就可以看出来,我们不是在眼下的快乐和长远的快乐之间做选择,而是在无意义的痛苦和有意义的痛苦之间做选择。

不自律就不自由。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值