【面试必刷TOP101】合并k个已排序的链表 判断链表中是否有环

news2024/11/27 1:44:53

目录

题目:合并k个已排序的链表_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

解题思路:

代码:

过啦!!!

题目:判断链表中是否有环_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:合并k个已排序的链表_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param lists ListNode类一维数组 
 * @return ListNode类
*/
func mergeKLists( lists []*ListNode ) *ListNode {
    // write code here
}

解题思路:

这道题合并链表的部分和昨天的一模一样,直接实现一个合并的方法调用就好了,这道题目的核心思想是分治思想,利用分治思想将所有链表合并,具体操作如下:

1)当链表数量 == 0 时,证明没有链表需要合并,返回 nil

2)当链表数量 == 1 时,证明只剩一个链表了,直接返回唯一的这一条链表

3)当链表数量 == 2 时,证明只剩下两条链表了,返回这两个链表的合并

4)当链表数量 > 2 时,我们就利用分治的思想,把这些链表对半分开计算,一直递归分治,直到链表的数量 <= 2,这样就可以走我们上面三条逻辑完成每一个部分的链表合并。代码如下:

代码:

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param lists ListNode类一维数组 
 * @return ListNode类
*/
func mergeKLists( lists []*ListNode ) *ListNode {
    n := len(lists)

    if n == 0 {
        return nil
    }
    if n == 1 {
        return lists[0]
    }
    if n == 2 {
        return merge(lists[0], lists[1])
    } 

    tmp := n / 2
    return merge(mergeKLists(lists[:tmp]), mergeKLists(lists[tmp:]))
    
}

func merge(list1 *ListNode, list2 *ListNode) *ListNode {
    if list1 == nil && list2 == nil {
        return nil
    }

    head := &ListNode{}
    cur := head
    for list1 != nil && list2 != nil {
        if list1.Val < list2.Val {
            cur.Next = list1
            list1 = list1.Next
        } else {
            cur.Next = list2
            list2 = list2.Next
        }
        cur = cur.Next
    }

    if list1 != nil {
        cur.Next = list1
    }

    if list2 != nil {
        cur.Next = list2
    }

    return head.Next
}

过啦!!!

题目:判断链表中是否有环_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 
 * @param head ListNode类 
 * @return bool布尔型
*/
func hasCycle( head *ListNode ) bool {
    // write code here
}

解题思路:

这道题非常非常的经典,我也做过很多很多遍了,我到现在还记得我第一次做这道题的时候的思路,我当时的思路是直接强行遍历,如果遍历到 nil 就证明这个链表没有环,如果一直无限循环超出了题目给了用例长度,那就证明没有环,你别说,之前还过了

当然,我现在写这道题就是用标准的快慢指针的写法,slow 指针一次走一步,fast 指针一次走两步,他们如果链表有环,那他们迟早会相遇。代码如下:

代码:

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 
 * @param head ListNode类 
 * @return bool布尔型
*/
func hasCycle( head *ListNode ) bool {
    slow := head
    fast := head
    for fast != nil && fast.Next != nil {
        slow = slow.Next
        fast = fast.Next.Next
        if slow == fast {
            return true
        }
    }
    return false
}

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1008960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JAVA】idea初步使用+JDK详细配置

1、官方下载idea 官网&#xff1a;Download IntelliJ IDEA – The Leading Java and Kotlin IDE (1)、下载教程 我下载没截屏&#xff0c;详细教程请看 原文&#xff1a;手把手教你JDKIDEA的安装和环境配置_idea配置jdk_快到锅里来呀的博客-CSDN博客 2、启动项目时候需要配置J…

OpenMMLab MMYOLO目标检测算法原理(二)

算法原理及YOLOV5实现 YOLOv5是一种面向实时工业应用的开源目标检测算法&#xff0c;受到了广泛的关注。YOLOv5之所以能火爆&#xff0c;并不仅仅是因为其优异的性能。它更多的是关于其库的整体实用性和稳健性。简而言之&#xff0c;YOLOv5的主要特点是&#xff1a; &#xff…

vue前后端分离单点登录,结合长token和短token进行登录

单点登录背景 在公司发展初期&#xff0c;公司拥有的系统不多&#xff0c;通常一个两个&#xff0c;每个系统都有自己的登录模块&#xff0c;运营人员每天用自己的账号登陆&#xff0c;很方便&#xff0c;但是&#xff0c;随着企业的发展&#xff0c;用到的系统随之增加&#x…

纯干货|AI辅助写论文的正确打开方式!

论文写作中可能遇到问题 1. 选题问题&#xff1a;是否无法确定研究方向和选择合适的题目&#xff1f; 2. 文献综述问题&#xff1a;是否困惑如何进行文献调研和综述&#xff1f; 3. 方法论问题&#xff1a;是否不知道该选择何种研究方法&#xff1f; 4. 数据处理问题&#…

复杂场景:民族工业如何做大,主数据管理助力这家标杆工业企业领跑全球

项目背景 大族激光成立于1999年&#xff0c;总部位于中国深圳。是一家从事工业激光加工设备与自动化等配套设备及其关键器件的研发、生产、销售的制造业企业&#xff0c;公司的产品广泛应用于工业制造、通信、医疗、电子、消费电子、光通讯等领域。经过多年的发展&#xff0c;大…

一文看懂Oracle 19c OCM认证考试(需要Oracle OCP证书)

Oracle OCM的认证全称是Oracle Certified Master&#xff0c;是比OCP更高一级的认证&#xff0c;姚远老师的很多OCP学员都对OCM考试有兴趣&#xff0c;这里跟大家做个介绍。 OCM考试全部是上机的实操考试&#xff0c;没有笔试&#xff0c;要到Oracle原厂参加两天的考试。参加1…

【ABAP】如何理解SAP中的CLIENT (客户端)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;阿里云社区专家博主&#xff0c;华为云云享专家&#xff0c;腾讯云社区认证作者&#xff0c;CSDN SAP应用技术领域优质创作者。在学习工作中&#xff0c;我通常使用偏后端的开发语言ABAP&#xff0c;SQL进行任务的完成…

蓝牙资讯|苹果新款AirPods Pro支持Vision Pro无损音频和IP54防水防尘

苹果公司宣称&#xff0c;USB-C 能够带来更多灵活性&#xff0c;现在用户可以使用手机的 USB-C 接口&#xff0c;为 AirPods Pro 耳机盒充电。 虽然苹果没有详细介绍这款耳机&#xff0c;但在今天的新闻稿中依然透露了一些不一样的地方&#xff0c;例如新款 AirPods Pro 2 升…

GaussDB技术解读系列:运维自动驾驶探索

近日&#xff0c;在第14届中国数据库技术大会&#xff08;DTCC2023&#xff09;的GaussDB“五高两易”核心技术&#xff0c;给世界一个更优选择专场&#xff0c;华为云数据库运维研发总监李东详细解读了GaussDB运维系统自动驾驶探索和实践。 随着企业数字化转型进入深水区&…

股票数据分析应用之可视化图表组件

股市是市场经济的必然产物&#xff0c;在一个国家的金融领域之中有着举足轻重的地位。在过去&#xff0c;人们对于市场走势的把握主要依赖于经验和直觉&#xff0c;往往容易受到主观因素的影响&#xff0c;导致决策上出现偏差。如今&#xff0c;通过数据可视化呈现&#xff0c;…

SAP MM会计凭证凭证状态为U

往成本中心发料后&#xff0c;SAP产生会计凭证状态为U: 会计凭证存在ACDOC 和 BKPF但是不存在BSEG 原因&#xff1a;物料主数据没有计划价格。

王道数据结构C语言顺序表基本操作实现

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdbool.h> #define MaxSize 50 typedef struct {//顺序表(静态实现)int data[MaxSize];//顺序表元素int length;//顺序表当前长度 }SqList;//类型定义#define InitSize 100; typedef struct {//动态实…

智能二创文案软件-生成文案改写文案的软件

咱们都知道&#xff0c;写作是一项既耗时又考验创造力的任务。有时候&#xff0c;我们可能会陷入创意枯竭的困境&#xff0c;不知道该如何表达自己的想法。这时候&#xff0c;智能二创文案软件就出现在我们的视野中&#xff0c;它们声称可以帮助我们生成文案&#xff0c;省去了…

深度学习-全连接神经网络-详解梯度下降从BGD到ADAM - [北邮鲁鹏]

文章目录 参考文章及视频导言梯度下降的原理、过程一、什么是梯度下降&#xff1f;二、梯度下降的运行过程 批量梯度下降法(BGD)随机梯度下降法(SGD)小批量梯度下降法(MBGD)梯度算法的改进梯度下降算法存在的问题动量法(Momentum)目标改进思想为什么有效动量法还有什么效果&…

activemq学习笔记

传统的request/response 在客户端提交请求后必须等待服务端处理完毕给于反馈&#xff0c;这期间客户端完全处于空闲等待状态&#xff0c;甚至有可能超时&#xff1b; 基于消息中间件的request/response 客户端提交请求&#xff0c;不必等待服务器处理&#xff0c;客户端可以继…

《网页设计与制作-初级》

《网页设计与制作》是web前端开发技术中静态网页中的内容&#xff0c;主要包括html、css、js中的静态内容部分&#xff0c;是专业基础课程。 随着5G时代的到来&#xff0c;人工智能与物联网结合行业的飞速发展&#xff0c;更多的互联网的崛起。这肯定就比如伴随着对移动互联网…

1023. 驼峰式匹配

1023. 驼峰式匹配 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 1023. 驼峰式匹配 https://leetcode.cn/problems/camelcase-matching/description/ 完成情况&#xff1a; 解题思路&#xff1a; /**题目理解&am…

【TA 方法积累】贴图快速无缝化处理

参考&#xff1a; SDC4D 最好用的无缝贴图制作方法【C4D教程】_哔哩哔哩_bilibili 方法1&#xff1a;Tiling 3D Materials, Quickly &#xff0c;pixplant 方法2&#xff1a;SD修改&#xff08;推荐&#xff09; 核心就是SD里的这个节点&#xff0c;Make It Tile Patch Col…

冠达管理:打新股的风险有多大?

在股市中&#xff0c;打新股是一种常见的出资方式&#xff0c;也是出资者追求高回报的途径之一。但是&#xff0c;打新股也伴随着必定的危险。本文将从多个视点分析打新股的危险&#xff0c;并对其进行评估。 首要&#xff0c;商场危险是打新股面对的主要危险之一。在我国&…

线性回归方程

性回归是利用数理统计中的回归分析来确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法&#xff0c;是变量间的相关关系中最重要的一部分&#xff0c;主要考查概率与统计知识&#xff0c;考察学生的阅读能力、数据处理能力及运算能力&#xff0c;题目难度中等&…