刷题 链表

news2024/11/27 17:57:04

面试经典150题 - 链表

141. 环形链表

在这里插入图片描述

class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode* slow = head, *fast = head;
        while (fast != nullptr && fast->next != nullptr) {
            slow = slow->next;
            fast = fast->next->next;
            if (slow == fast) {
                return true;
            }
        }
        return false;
    }
};

142. 环形链表 II

在这里插入图片描述

在这里插入图片描述

class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        ListNode* slow = head, *fast = head;
        while (fast != nullptr && fast->next != nullptr) {
            slow = slow->next;
            fast = fast->next->next;
            if (slow == fast) {
                slow = head;
                while (slow != fast) {
                    slow = slow->next;
                    fast = fast->next;
                }
                return slow;
            }
        }
        return nullptr;
    }
};

2. 两数相加 - 虚拟头节点 + 加法进位

在这里插入图片描述

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* dummy_head = new ListNode(0);
        ListNode* cur = dummy_head, *cur_1 = l1, *cur_2 = l2;
        int sum = 0, carry = 0;
        while (cur_1 || cur_2 || carry != 0) {
            sum = 0;
            if (cur_1) {
                sum += cur_1->val;
                cur_1 = cur_1->next;
            }
            if (cur_2) {
                sum += cur_2->val;
                cur_2 = cur_2->next;
            }
            sum += carry;
            carry = sum / 10;
            cur->next = new ListNode(sum % 10);
            cur = cur->next;
        }
        ListNode* head = dummy_head->next;
        delete dummy_head;
        dummy_head = nullptr;
        return head;
    }
};

21. 合并两个有序链表 - 虚拟头节点

在这里插入图片描述

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* node_1, ListNode* node_2) {
        ListNode* dummy_head = new ListNode();
        ListNode* cur = dummy_head;
        while (node_1 != nullptr && node_2 != nullptr) {
            if (node_1->val < node_2->val) {
                cur->next = node_1;
                node_1 = node_1->next;
            } else {
                cur->next = node_2;
                node_2 = node_2->next;
            }
            cur = cur->next;
        }
        cur->next = node_1 ? node_1 : node_2; // 直接连接剩余部分
        ListNode* head = dummy_head->next;
        delete dummy_head;
        dummy_head = nullptr;
        return head;
    }
};

138. 随机链表的复制 - 深拷贝 - 哈希表存储对应关系

在这里插入图片描述

class Solution {
public:
    // 本题相当于 对 链表进行深拷贝
    Node* copyRandomList(Node* head) {
        unordered_map<Node*, Node*> copy_hash;
        Node* cur = head;
        // 先 根据节点的值 新建拷贝,并通过哈希表关联
        while (cur) {
            copy_hash[cur] = new Node(cur->val);
            cur = cur->next;
        }
        cur = head;
        // 根据哈希表 将 拷贝节点 连接起来 (next, random)
        while (cur) {
            copy_hash[cur]->random = copy_hash[cur->random];
            copy_hash[cur]->next = copy_hash[cur->next];
            cur = cur->next;
        }
        return copy_hash[head];
    }
};

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

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

相关文章

maven加载依赖成功但是引入import不了包,注解报错

突然就复现不出来了&#xff0c;奇了怪了&#xff0c;简单说一下吧&#xff0c;就是模块里引入了SpringBoot Test那个依赖然后&#xff0c; 这个地方是显示引入成功的&#xff0c;但是 这个包下没有&#xff0c;导致我SpringBootTest一直出不来&#xff0c;就找不到这个包下的注…

【一步步开发AI运动小程序】二十、AI运动小程序如何适配相机全屏模式?

引言 受小程序camera组件预览和抽帧图像不一致的特性影响&#xff0c;一直未全功能支持全屏模式&#xff0c;详见本系列文件第四节[小程序如何抽帧]https://blog.csdn.net/alphaair/article/details/133981787 “小程序如何抽帧”)&#xff1b;随着插件在云上赛事、健身锻炼、A…

一个神奇的 Python 库:flanker-next

文章目录 一个神奇的 Python 库&#xff1a;flanker-next背景介绍库简介安装指南函数使用示例解析邮箱地址验证邮箱地址解析 MIME 消息 应用场景自动化邮件处理邮件内容分析客户支持自动化 常见问题及解决方案问题1&#xff1a;解析无效的电子邮件地址问题2&#xff1a;无法找到…

1992-2022年各省夜间灯光数据(excel+shp格式)

1992-2022年各省夜间灯光数据&#xff08;excelshp格式&#xff09; 1、时间&#xff1a;1992-2022年 2、来源&#xff1a; DMSP-OLS、NPP-VIIRS 3、指标&#xff1a;均值、总和、最小值、最大值、标准差 4、范围&#xff1a;34省市&#xff08;含港澳台&#xff09; 5、说…

(25)QPSK信号在AWGN和Rayleigh衰落信道下的性能仿真

文章目录 前言一、MATLAB仿真代码二、仿真结果 前言 QPSK信号在AWGN和Rayleigh衰落信道下的性能仿真MATLAB代码。 一、MATLAB仿真代码 代码如下&#xff1a; nSamp 8; % 矩形脉冲的采样点数 nSymbol 1000000; % 传输的符号…

GPT-SOVIT模型部署指南

一、模型介绍 强大的小样本语音转换和文本转语音 WebUI。 具有以下特征&#xff1a; 零样本 TTS&#xff1a; 输入 5 秒的声音样本并体验即时文本到语音的转换。少量样本 TTS&#xff1a; 仅使用 1 分钟的训练数据对模型进行微调&#xff0c;以提高语音相似度和真实感。跨语…

QD1-P11 HTML常用标签:图片标签

本节学习 HTML 常用标签&#xff1a;图片标签 img ‍ 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p11 ‍ 知识点 1&#xff1a;img 是行内标签 img 是一个行内标签&#xff0c;不会自动换行。 知识点 2&#xff1a;img 标签使用格式 <img src"图片URL" a…

Leetcode 删除链表倒数第 N 个节点

算法思想&#xff1a; 使用了双指针法。下面是详细的算法思想&#xff1a; 1. 引入虚拟头节点&#xff08;dummy node&#xff09; 为了处理链表的一些边界情况&#xff08;比如删除头节点&#xff09;&#xff0c;我们在链表的头部引入了一个虚拟节点 dummy&#xff0c;并让…

点评项目-5-商户查询缓存,从 2s 优化到 12ms

业务需求&#xff1a;当前端发送 shop/id 的请求时&#xff0c;我们需要向前端响应对应 id 的详细数据给前端 直接查询 mysql 效率比较低&#xff0c;我们可以使用 redis 作为中间件进行数据的缓存&#xff0c;先查询 redis &#xff0c;若redis 中未查询到&#xff0c;则在 m…

24.3 基于文件的服务发现模式

本节重点介绍 : 基于文件的服务发现提供了一种配置静态目标的更通用的方法可以摆脱对特定服务发现源的依赖通常的做法是调用内部CMDB的接口获取target数据&#xff0c;打上标签&#xff0c;生成json文件发给prometheus采集 基于文件的服务发现模式 解决的问题 之前手动配置…

视频声音怎么去除?高效的视频声音去除方法

视频声音怎么去除&#xff1f;在多媒体创作与编辑的过程中&#xff0c;我们时常会遇到这样一个需求&#xff1a;为了使用视频素材&#xff0c;需要去除视频里的声音。这一步骤看似简单&#xff0c;实则对于提升作品的整体质量和专业度至关重要。很多时候&#xff0c;我们收集到…

人工智能风险预警以及区块链解决方案探索

​​发表时间&#xff1a;2024年9月26日 一个专家小组在为世界经济论坛撰写的报告中警示道&#xff0c;人工智能&#xff08;以下均简称为AI&#xff09;技术增加了各类组织遭受攻击的风险&#xff0c;并带来了训练数据污染和提示词注入攻击等新威胁。由于训练和测试数据库的庞…

VmWare中安装CenterOs(内网服务器)

VmWare中安装CenterOs(内网服务器) 文章目录 VmWare中安装CenterOs(内网服务器)[toc] 一 、CentOS 7的下载与安装1、下载2、安装&#xff08;1&#xff09;前期准备&#xff08;2&#xff09;正式安装 开始等待&#xff01;&#xff01;&#xff01; 二、软件仓库更换1、root用…

openmmlab实现图像超分辨率重构

文章目录 前言一、图像超分辨率重构简介二、mmmagic实现图像超分 前言 超分辨率重构技术&#xff0c;作为计算机视觉领域的一项重要研究课题&#xff0c;近年来受到了广泛关注。随着科技的飞速发展&#xff0c;人们对图像质量的要求越来越高&#xff0c;尤其是在智能手机、监控…

使用idea和vecode创建vue项目并启动(超详细)

一、idea创建vue项目 创建项目之前先下载好插件 新建项目找到vue生成器 写好名称&#xff0c;找到自己需要存放的地址&#xff0c;node解释器安装方式可以看我上一个博客&#xff0c;vueCLI是选择vue的版本&#xff0c;我们可以使用idea自带的vue版本默认是vue3&#xff0c;创…

【LeetCode】修炼之路-0004-Median of Two Sorted Arrays【python】

题目 Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays. The overall run time complexity should be O(log (mn)). Example 1: Input: nums1 [1,3], nums2 [2] Output: 2.00000 Explanation: merged…

java.lang.NoClassDefFoundError: kotlin/Result解决方案

问题 在控制窗口上虽然报错是找不到对应的class&#xff0c;但是呢在我们导入kotlin的后&#xff0c;还是报相同的异常&#xff0c;在网上查找了各种资料&#xff0c;都没有解决方案。 问题分析 在idea2021之后&#xff0c;kotlin都使用远程仓库&#xff08;kotlinx-coeouti…

选择 PDF 编辑器时要考虑什么?如何选择适用于 Windows 10 的 PDF 编辑器

选择 PDF 编辑器时要考虑什么&#xff1f; 随着技术的出现&#xff0c;您在网上浏览时肯定会遇到一些 PDF 软件。但是&#xff0c;选择PDF 编辑器时需要考虑什么&#xff1f;如果您是重度用户并将在您的工作场所使用它&#xff0c;建议您找到专业、使用方便且能够帮助您完成任…

记一次pyc逆向

.py文件   源代码文件。   这是开发者编写的 Python 源代码文件&#xff0c;包含了可执行的 Python 代码。 .pyc文件   字节码文件。   Python 源文件&#xff08;.py&#xff09;在执行时会被编译为字节码&#xff0c;并存储在 __pycache__ 目录下&#xff0c;文件名通…

Linux下编译Eclipse Paho库采用MQTT协议连接MQTT服务器

一、Eclipse Paho介绍 Eclipse Paho 是一个开源项目&#xff0c;由 Eclipse Foundation 主持&#xff0c;提供可靠的开源实现来处理 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;协议以及其他与物联网 (IoT) 相关的协议。MQTT 是一种轻量级的发布/订阅消…