java链表常见简单面试算法题

news2024/11/15 13:53:09
  1. 头插法、尾插法
    头插法:先待插入指向头结点的next,后头结点的next指向待插入。
    尾插法:借助尾指针,直接插入
 /**
     * 头插法
     * @param head
     * @return
     */
    public static Node head_insert(Node head, int t){
        Node node=new Node(t);
        node.setNext(head.getNext());
        head.setNext(node);
        return head;
    }

    /**
     * 尾插法
     * @param head
     * @return
     */
    public static Node tail_insert(Node head,int t){
        Node tail=head;
        Node target=new Node(t);
        while (tail.getNext()!=null){
            tail=tail.getNext();
        }
        tail.setNext(target);
     return head;
    }
}
  1. 单链表翻转
    力扣:LCR 024. 反转链表
    将翻转前的链表记pre,翻转后的记next(也是head)。结点依次翻转。
class Solution {
    public ListNode reverseList(ListNode head) {
     ListNode pre=null;ListNode next=null;
     while (head!=null){
         next=head.next;
         head.next=pre;
         pre=head;
         head=next;
     }
     return pre;
    }
}
  1. 链表成环判断
    力扣:141. 环形链表
    定义两个指针slow、fast,slow走一步,fast走两步遍历链表。相遇就有环
public class Solution {
    public boolean hasCycle(ListNode head) {
        ListNode slow=head;
        ListNode fast=head;
        while(fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
            if(slow==fast){
              return true;
            }
        }
        return false;

    }
}
  1. 链表成环位置判断
    力扣:LCR 022. 环形链表 II
    在这里插入图片描述
    (1)定义一个A指针(指向开始点A)、B指针(指向相遇点B)。以相同速度移动,相遇点就是环的入口。
public class Solution {
    public ListNode detectCycle(ListNode head) {
        Boolean result=false;
        ListNode slow=head;
        ListNode fast=head;
        while (slow!=null&&fast!=null&&fast.next!=null){
           slow=slow.next;
           fast=fast.next.next;
           if(slow==fast){
               result=true;
               break;
           }
        }
        if(result==false){
         return null;
        }
        slow=head;
        while (slow!=fast){
            slow=slow.next;
            fast=fast.next;
        }
        return slow;
    }
}

(2)为什么慢指针和快指针相遇时一定没走完一圈?
将环平铺展开,假设慢指针走完一圈了,快指针走两圈的距离。在下图中看出快指针已经超过了慢指针,中途一定有相遇的瞬间。
在这里插入图片描述

  1. 链表成环长度判断
    在上一题找到环入口的前提下,再定义一个指针,绕一圈环并记数。
  2. 有序链表的合并
    力扣:21. 合并两个有序链表
    定义一个pre指针,始终指向已经排好序的链表尾结点。定义一个虚拟节点作为pre的初始节点。
    依次遍历两个链表取出小的那个结点作为pre的下一个结点。
class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
     ListNode head=new ListNode(0);
     ListNode pre=head;
     while(list1!=null&&list2!=null){
        if(list1.val<list2.val){
          pre.next=list1;
          pre=list1;
          list1=list1.next;
        }else{
          pre.next=list2;
          pre=list2;
          list2=list2.next;
        }
     }
     if(list1==null){
     pre.next=list2;
     }else{
        pre.next=list1;
     }
     return head.next;
   }
}

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

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

相关文章

vitis2021.1生成设备树

PL端功能相关的dtsi动态设备树源文件的生成&#xff0c;需依赖Xilinx设备树源码包 其下载地址为&#xff1a;https://github.com/Xilinx/device-tree-xlnx/tree/xlnx_rel_v2021.1 打开vitis软件&#xff0c;导入xilinx设备树源码包 点击Xilinx->Software Repositories 完成…

中霖教育:经济师的十个专业类别怎么选?

经济师一共包含十个专业类别&#xff0c;分别是工商管理、农业经济、财政税收、金融、保险、人力资源管理、旅游经济、运输经济、建筑与房地产经济、知识产权。 经济师选择报考专业时有哪些建议? 1、职业规划是选择专业的首要考虑点。未来的职业发展途径应与所选专业紧密相连…

使用lv虚拟卷扩展磁盘

使用centos演示。 首先创建centos虚拟机。链接&#xff1a;VMWARE安装Centos8,并且使用ssh连接虚拟机-CSDN博客 1. 增加磁盘。 选中要扩容的虚拟机&#xff0c;右键选择设置&#xff0c;然后点击磁盘&#xff0c;选择添加。 这里选择NVM的磁盘。选择这种磁盘是为了保持与之前…

昨日头条管理系统设计

设计一个“昨日头条”类似的内容管理系统时&#xff0c;我们可以借鉴内容管理系统设计原则&#xff0c;并针对“昨日头条”这类新闻资讯类应用的特点进行定制化设计。以下是一些关键点&#xff1a; 1. 内容采集与整合 智能抓取&#xff1a;设计爬虫系统自动抓取国内外各大新闻…

SOLIDWORKS 2024多方面优势

在工程设计领域&#xff0c;SOLIDWORKS始终以其优越的功能和不断创新的技术&#xff0c;带领着行业的发展方向。随着SOLIDWORKS 2024版本的发布&#xff0c;这款三维设计软件再次展现了其多方面的显著优势&#xff0c;为设计师和工程师们提供了更加智能、便捷的工作平台。 一、…

单词间隔重复算法

间隔重复算法 理论背景 遗忘曲线是一种描述记忆遗忘率的模型&#xff0c;艾宾浩斯在其著作《记忆&#xff1a;实验心理学的贡献》中首次详细描述了遗忘曲线&#xff0c;他使用了一些无意义的字母组合作为记忆对象&#xff0c;通过在不同的时间间隔后检查记忆的遗忘程度&#…

论文学习_Getafix: learning to fix bugs automatically

1. 引言 研究背景:现代生产代码库极其复杂并且不断更新。静态分析器可以帮助开发人员发现代码中的潜在问题(在本文的其余部分中称为错误),这对于在这些大型代码库中保持高代码质量是必要的。虽然通过静态分析尽早发现错误是有帮助的,但修复这些错误的问题在实践中仍然主要…

浅谈化工厂环保管理的痛点、智慧环保的必要性及EHS系统的实现路径

在全球环保意识日益增强的背景下&#xff0c;化工厂作为工业领域的重要组成部分&#xff0c;其环保管理显得尤为重要。然而&#xff0c;化工厂在追求经济效益的同时&#xff0c;也面临着诸多环保管理的痛点。本文将围绕化工厂环保管理的痛点、化工厂为何需要智慧环保以及如何借…

一阶线性微分方程应用实例:并联RC电路恒定电流求解电压

对于并联RC电路&#xff0c;我们可以通过求解微分方程来找出电压 V(t)。 微分方程求解 我们开始于给定的表达式&#xff1a; 重写方程&#xff1a; 将方程的形式调整为标准的线性微分方程形式&#xff1a; 这是一个一阶线性微分方程&#xff0c;我们可以使用积分因子法来解…

ROS服务通信自定义srv

服务通信自定义srv 流程:创建ROS功能包按照固定格式创建srv文件编译配置文件编译生成中间文件 流程: srv 文件内的可用数据类型与 msg 文件一致&#xff0c;且定义 srv 实现流程与自定义 msg 实现流程类似&#xff0c;需查阅msg文件的可以浏览ROS话题通信流程自定义数据msg格式…

红日靶场----(三)2.漏洞利用

上期的通过一句话木马实现对目标主机的持久后门 我使用的是蚁剑&#xff0c;蚁剑安装及使用参考&#xff1a; 下载地址&#xff1a; GitHub - AntSwordProject/AntSword-Loader: AntSword 加载器 安装即使用&#xff1a; 1. 快速入门 语雀 通过YXCMS的后台GETSHELL 利用…

【测开能力提升-fastapi框架】介绍简单使用

0. 前期说明 立了很多flag(开了很多专题)&#xff0c;但坚持下来的没几个。也干了很多测试工作(起初是硬件(Acoustic方向)测试 - 业务功能测试 - 接口测试 - 平台功能测试 - 数据库测试 - py自动化测试 - 性能测试 - 嵌入式测试 - 到最后的python测试开发)&#xff0c;最终还是…

链表---头插法+尾插法

本博客介绍了单链表的实现&#xff0c;以及头插法尾插法的代码实现 1.定义一个结点类 class ListNode{int value;ListNode next;public ListNode(int value) {super();this.value value;}Overridepublic String toString() {return "ListNode{" "value" …

Android 自定义Edittext 和TextView 提示文字和填入内容不同的粗细组件

近期项目中又EditText 以及TextView 这两个组件需要用到提示文字 以及 填入文字要保持不同的粗细程度,所以记录一下 首先 是EditText 组件的自定义 BLEditText 继承的这个组件是一个三方的组件,可以在很大程度上减少drawable的编写,有兴趣的可以去相关的Git去看一下 点击查看,…

excel有条件提取单元格特定文本(筛选纯文字的单元格或含有数字的单元格、单元格提取不同的文本长度)

实际工作背景 需要对导出的银行流水中的数十个村以及对应的村小组进行分组统计&#xff0c;但是初始的表格中村和小组是混在一起的&#xff0c;如下图所示&#xff1a; 目的&#xff1a;将大树村和大树村小组名称分别筛选出来 1.观察发现&#xff0c;大树村小组的单元格第4…

构建与操作顺序栈

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝黑暗的笼罩更会凸显光明的可贵! 顺序栈是数据结构中栈(Stack)的一种具体实现方式,它使用一段地址连续的内存空间(通…

电子电气架构 --- 关于DoIP的一些闲思 下

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

空中交通新动能!2024深圳eVTOL展动力电池展区核心内容抢先看!

空中交通新动能&#xff01;2024深圳eVTOL展动力电池展区核心内容抢先看&#xff01; 关键词&#xff1a;2024深圳eVTOL展 动力电池 高能量密度电池 高性能电池材料 作为2024深圳eVTOL展重要组成部分&#xff0c;2024深圳eVTOL动力电池展将于9月23-25日在深圳坪山燕子湖国际会…

Mac的系统数据怎么删除 cleanmymac会乱删东西吗 cleanmymac有用吗

作为一款专业级的苹果电脑清理软件&#xff0c;CleanMyMac可以精准识别系统垃圾&#xff0c;有效防止Mac系统数据被误删。软件可以深入系统底层&#xff0c;清理无用的系统数据&#xff0c;优化苹果电脑设置&#xff0c;提升Mac系统性能。有关Mac的系统数据可以删吗&#xff0c…

基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库

研究背景 随着互联网和移动设备的普及&#xff0c;音乐流媒体服务成为人们获取音乐的主要方式。这些平台如Spotify、Apple Music和网易云音乐等&#xff0c;提供了海量的音乐资源&#xff0c;使用户能够随时随地聆听各种类型的音乐。然而&#xff0c;如何在海量的音乐资源中快…