当前位置: 首页 > news >正文

【刷题篇】链表

文章目录

  • 1、两数相加
  • 2、两两交换链表中的节点
  • 3、 重排链表
  • 4、 合并 K 个升序链表
  • 5、 K 个一组翻转链表

1、两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
在这里插入图片描述
在这里插入图片描述

class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* cur1=l1;ListNode* cur2=l2;ListNode* head=new ListNode(0);ListNode* cur=head;int dummy=0;while(cur1||cur2){int a=0;int b=0;if(cur1){a=cur1->val;dummy+=a;cur1=cur1->next;}if(cur2){b=cur2->val;dummy+=b;cur2=cur2->next;}ListNode* newNode=new ListNode(dummy%10);cur->next=newNode;cur=cur->next;dummy/=10;}if(dummy!=0){ListNode* newNode=new ListNode(dummy%10);cur->next=newNode;}cur=head->next;delete head;//释放内存return cur;}
};

2、两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
在这里插入图片描述

class Solution {
public:ListNode* swapPairs(ListNode* head) {if (head == nullptr || head->next == nullptr)return head;ListNode* newHead = new ListNode(0);newHead->next = head;ListNode *prev = newHead, *cur = prev->next, *next = cur->next,*nnext = next->next;while (cur && next) {// 交换结点prev->next = next;next->next = cur;cur->next = nnext;// 修改指针prev = cur; // 注意顺序cur = nnext;if (cur)next = cur->next;if (next)nnext = next->next;}cur = newHead->next;delete newHead;return cur;}
};

3、 重排链表

给定一个单链表 L 的头节点 head ,单链表 L 表示为:
L0 → L1 → … → Ln-1 → Ln
请将其重新排列后变为:
L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
在这里插入图片描述

class Solution {
public:void reorderList(ListNode* head) {ListNode* fast=head;ListNode* slow=head;ListNode* new1=slow;//找中间节点while(fast&&fast->next){fast=fast->next->next;slow=slow->next;} //将后半部分链表进行逆序ListNode* midnode=slow->next;slow->next=nullptr;ListNode* head2=new ListNode(0);while(midnode){ListNode* next=midnode->next;midnode->next=head2->next;head2->next=midnode;midnode=next;}ListNode* new2=head2->next;//合并ListNode* dummy=new ListNode(0);ListNode* cur=dummy;while(new1){dummy->next=new1;dummy=dummy->next;new1=new1->next;if(new2){dummy->next=new2;dummy=dummy->next;new2=new2->next;}}head=cur->next;}
};

4、 合并 K 个升序链表

给定一个链表数组,每个链表都已经按升序排列。
请将所有链表合并到一个升序链表中,返回合并后的链表。
在这里插入图片描述

class Solution {
public:struct cmp{bool operator()(const ListNode* l1,const ListNode* l2){return l1->val>l2->val;}};ListNode* mergeKLists(vector<ListNode*>& lists) {priority_queue<ListNode*,vector<ListNode*>,cmp> heap;//让所有都节点进入小根堆for(auto l : lists){if(l) heap.push(l);}//合并ListNode* ret=new ListNode(0);ListNode* prev=ret;while(!heap.empty()){ListNode* t=heap.top();heap.pop();prev->next=t;prev=t;if(t->next) heap.push(t->next);}prev=ret->next;delete ret;return prev;}
};

5、 K 个一组翻转链表

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。
在这里插入图片描述

class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k) {ListNode* cur=head;int n=0;while(cur){n++;cur=cur->next;}n=n/k;ListNode* newhead=new ListNode(0);ListNode* prev=newhead;cur=head;for(int i=0;i<n;i++){ListNode* tmp=cur;for(int j=0;j<k;j++){ListNode* next=cur->next;cur->next=prev->next;prev->next=cur;cur=next;}prev=tmp;}prev->next=cur;cur=newhead->next;delete newhead;return cur;}
};

相关文章:

【刷题篇】链表

文章目录 1、两数相加2、两两交换链表中的节点3、 重排链表4、 合并 K 个升序链表5、 K 个一组翻转链表 1、两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数…...

若依框架,小程序访问后端,后端访问客户端,客户端读取图片返回

服务端代码: import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; …...

os7安装gitlab

gitlab安装要求&#xff1a;os7以上版本&#xff0c;4G内存&#xff0c;磁盘50GB 1.克隆 由于我这里不想影响原来的&#xff0c;所以这里克隆一个os系统。如果其他是第一次安装则不用。 2.修改ip地址 cd /etc/sysconfig/network-scriptsvi ifcfg-ens33 按&#xff1a;insert…...

木头姐:将出于经济方面的考虑支持特朗普

美国投资公司Ark Invest的首席执行官凯西•伍德表示&#xff0c;她计划在今年的总统选举中投票给共和党候选人、美国前总统唐纳德•特朗普。 “就像我对我的孩子们说的……就像我对他们说的&#xff0c;‘听着&#xff0c;我要把票投给能为我们的经济做得最好的人。’伍德周末…...

sql注入登陆绕过

此列表包含通过XPath、LDAP和SQL注入绕过登录的有效负载(按此顺序)。 使用此列表的方法是将前200行作为用户名和密码。然后,先将完整的列表放入用户名中,然后放入密码输入,同时放入一些密码(如Pass1234)或一些已知的用户名(如admin)。 admin password 1234 123456 root to…...

QT利用QGraphicsDropShadowEffect效果及自定义按钮来实现一个炫酷键盘

1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent<...

机器学习(一)

机器学习 1.机器学习概述1.1 人工智能概述1.1.1 机器学习与人工智能、深度学习的关系1.1.2 人工智能的起点1.1.3 机器学习、深度学习能做什么&#xff1f; 1.2 什么是机器学习&#xff1f;1.2.1 定义1.2.2 数据集的构成 1.3 机器学习算法1.4 机器学习开发流程 2.特征工程2.1 数…...

【深度学习】python之人工智能应用篇——图像生成技术(一)

说明&#xff1a; 两篇文章根据应用场景代码示例区分&#xff0c;其他内容相同。 图像生成技术&#xff08;一&#xff09;&#xff1a;包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术&#xff08;二&#xff09;&#xff1a…...

java 非srping 使用r2dbc操作mysql 增删改查代码

要在Java中使用R2DBC操作MySQL&#xff0c;首先需要添加相关依赖。在Maven项目中&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>dev.miku</groupId><artifactId>r2dbc-mysql</artifactId><version>0.8.…...

假冒国企现形记:股权变更视角下的甄别分析

启信慧眼-启信宝企业版 假冒国企公告2024-06-07&#xff0c;中粮集团有限公司官网发布《关于冒名中粮企业名单公告》。公告显示&#xff0c;”有不法分子通过伪造相关材料等方式&#xff0c;以我集团子公司名义开展业务&#xff0c;进行虚假宣传。经核实&#xff0c;上述公司假…...

Django 使用Apscheduler执行定时任务

Apscheduler 介绍 核心组件&#xff1a; 调度器、作业存储、执行器、触发器 调度器 BlockingScheduler 阻塞的调度器&#xff0c;适用于脚本 BackgroundScheduler 后台调度器&#xff0c;适用于非阻塞的应用如Web应用 AsyncIOScheduler 适用于 asyncio 的调度器 GeventSchedu…...

Shopee API接口:获取搜索栏生成的商品结果列表

一、引言 此接口可以高效获取搜索栏生成的商品结果列表。本文将详细介绍这一核心功能&#xff0c;并探讨其在实际应用中的价值。 二、核心功能介绍——获取搜索栏生成的商品结果列表 请求API及返回示例 http://api.xxxx.com/sp/ll/search/item?keywordiphone&page1&am…...

选择门店收银系统要考虑哪些方面?美业系统Java源码分享私

开店前的一个重要事件就是选择门店收银软件/系统&#xff0c;尤其是针对美容、医美等美业门店&#xff0c;一个优秀专业的系统十分重要&#xff0c;它必须贴合门店的经营需求&#xff0c;提供更全面、便捷、高效的管理功能&#xff0c;帮助提升门店的服务质量和经营效益。 以下…...

智慧养老的养老方式及其技术实现与趋势

智慧养老是一种借助现代信息技术手段&#xff0c;为老年人提供更高效、便捷、个性化服务的养老模式。以下是一些常见的智慧养老方式&#xff1a; 1. 远程健康监测系统 通过智能穿戴设备&#xff0c;如手环、手表等&#xff0c;实时收集老年人的生理数据&#xff0c;如心率、血…...

思维导图之计算机网络整体框架

高清自行访问&#xff1a;计算机网络整体框架 (yuque.com)...

P7771 【模板】欧拉路径

网址如下&#xff1a; P7771 【模板】欧拉路径 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 忘掉了输出欧拉回路的方法&#xff0c;搞了我好久 关于欧拉回路的知识可以看我之前的博客&#xff1a; 一点关于欧拉回路的总结-CSDN博客 代码如下&#xff1a; #include<q…...

卷积神经网络(CNN)理解

1、引言&#xff08;卷积概念&#xff09; 在介绍CNN中卷积概念之前&#xff0c;先介绍一个数字图像中“边缘检测edge detection”案例&#xff0c;以加深对卷积的认识。图中为大小8X8的灰度图片&#xff0c;图片中数值表示该像素的灰度值。像素值越大&#xff0c;颜色越亮&…...

Databend 开源周报第 149 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 支持递归公共表…...

Hue Hadoop 图形化用户界面 BYD

软件简介 Hue 是运营和开发 Hadoop 应用的图形化用户界面。Hue 程序被整合到一个类似桌面的环境&#xff0c;以 web 程序的形式发布&#xff0c;对于单独的用户来说不需要额外的安装。...

【经验分享】RT600 serial boot mode测试

【经验分享】RT600 serial boot mode测试 一&#xff0c; 文档描述二&#xff0c; Serial boot mode测试2.1 evkmimxrt685_gpio_led_output 工程测试2.2 evkmimxrt685_dsp_hello_world_usart_cm33工程测试 一&#xff0c; 文档描述 RT600的启动模式共支持4种&#xff1a; 1&am…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...