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

力扣hot100——排序链表(常见方法,归并排序)

解题思路:

  1. 分解(Divide):将待排序的列表递归地分成两半,直到每个子列表只包含一个元素(此时每个子列表都是有序的)。
  2. 解决(Conquer):递归地对每个子列表进行排序。由于每个子列表在分解过程中最终只包含一个元素,因此它们自然是有序的。排序的过程实际上是合并的过程。
  3. 合并(Combine):将两个有序的子列表合并成一个有序的列表。

步骤

  1. 递归分解
    • 如果列表的长度为1或0,则直接返回该列表(因为它已经是有序的)。
    • 否则,找到列表的中间位置,将列表分成两个子列表。
    • 递归地对两个子列表进行归并排序。
  2. 合并
    • 创建一个新的空列表用于存放合并后的结果。
    • 使用两个指针分别指向两个子列表的开头。
    • 比较两个指针所指向的元素,将较小的元素添加到新列表中,并将相应指针向前移动一位。
    • 重复上述步骤,直到其中一个子列表中的所有元素都添加到新列表中。
    • 将另一个子列表中剩余的元素(如果有)添加到新列表中。
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* sortList(ListNode* head) {if (!head || !(head->next)) {return head;}// 归并排序:首先一分为二ListNode *slow = head;ListNode *fast = head->next;while(fast && fast->next){slow = slow->next;fast = fast->next->next;}ListNode *second = slow->next;slow->next = NULL;ListNode *first = head;// 递归进行归并排序first = sortList(first);second = sortList(second);return Merge(first,second); // 合并后链表}ListNode* Merge(ListNode*first,ListNode*second){ListNode* dummy = new ListNode(0);ListNode* tail = dummy;while(first && second){if(first->val > second->val){tail->next = second;second = second->next;}else{tail->next = first;first = first->next;}tail = tail->next;}// 存在没有加入的部分则加入dummyif(first){tail->next = first;}else if(second){tail->next = second;}return dummy->next;}};

相关文章:

力扣hot100——排序链表(常见方法,归并排序)

解题思路: 分解(Divide):将待排序的列表递归地分成两半,直到每个子列表只包含一个元素(此时每个子列表都是有序的)。解决(Conquer):递归地对每个子列表进行排…...

使用 DeepSeek 和 ECharts 实现大屏数据可视化

引言 在当今数据驱动的时代,数据可视化成为了分析和展示数据的重要手段。大屏数据可视化不仅能够直观地展示数据,还能帮助决策者快速理解复杂信息。本文将介绍如何结合 DeepSeek(一个强大的数据处理与分析工具)和 ECharts(一个流行的数据可视化库)来实现大屏数据可视化。…...

基于springboot+vue的新生报到管理系统

一、系统架构 前端:vue | element-ui | echarts 后端:springboot | mybatis-plus | jwt 环境:jdk1.8 | mysql | maven 二、代码及数据 三、功能介绍 01. 登录 02. 首页 03. 管理员-系统管理-用户管理 04. 管理员-系统…...

【面试系列】Java开发--AI常见面试题

文章目录 1、实际工作或学习中用过哪些Ai工具1.1、AI编程1.2、AI对话聊天1.3、AI图像工具1.4、AI办公工具 2、谈谈你知道的AI领域的一些常见词汇及其含义的理解? 例如AIGC、LLM、DeepLearning分别是什么意思?2.1、AIGC(Artificial Intelligen…...

Maven 基础环境搭建与配置(二)

四、本地仓库配置,存储依赖 在 Maven 的世界里,本地仓库就像是一个 “私人储物间”,专门用来存放项目所需的各种依赖构件,如 JAR 包、WAR 包等。当我们构建项目时,Maven 会首先在本地仓库中查找所需的依赖&#xff0c…...

了解ffmpeg,安装并配置环境变量

一、了解FFmpeg FFmpeg 是一个功能强大的开源多媒体框架,能够处理音视频的录制、转换和流媒体传输。它由 Fabrice Bellard 发起,采用 LGPL/GPL 许可证,广泛应用于各种平台,包括 Linux、Windows 和 macOS 什么是FFmpeg&#xff1…...

Deepseek reasoning-content 透出调研

Deepseek reasoning-content 透出调研 部署方式:Docker Ollama Deepseek-R1:8b 参考: https://help.apiyi.com/deepseek-reasoning-content-guide.htmlhttps://yuluo-yx.github.io/blog/%E4%BD%BF%E7%94%A8-Ollama-%E9%83%A8%E7%BD%B2-DeepSeek-%E5…...

Codes 开源免费研发项目管理平台 2025年第一个大版本3.0.0 版本发布及创新的轻IPD实现

Codes 简介 Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对 30 人以下团队免费。它通过创新的方式简化研发协同工作,使敏捷开发更易于实施。并提供低成本的敏捷开发解决方案&#xff0…...

Leetcode K个一组翻转链表

双指针法&#xff0c;java solution class Solution {public ListNode reverseKGroup(ListNode head, int k) {if(head null || head.next null) return head;//设置pre和index节点ListNode pre head, index head.next;int m 0;while(m < k && index ! null) …...

电脑开机一段时间就断网,只有重启才能恢复网络(就算插网线都不行),本篇文章直接解决,不要再看别人的垃圾方法啦

下面的是我解决问题的心路历程&#xff0c;不想看的可以直接跳到解决方法上面&#xff01; 内心思路&#xff1a; w11电脑更新过系统后&#xff0c;我的电脑是常年不关机的&#xff0c;但是一天突然断网&#xff0c;试了很多方法都连不上&#xff0c;重启电脑就会好&#xff0…...

Python 性能剖析利器:DTrace 与 SystemTap 深度指南

在 Python 开发过程中&#xff0c;深入了解程序的运行时行为对于优化性能、排查问题至关重要。本文聚焦于 DTrace 和 SystemTap 这两款强大的监控工具&#xff0c;详细介绍它们在 CPython 中的应用&#xff0c;包括启用静态标记、编写 DTrace 和 SystemTap 脚本、利用可用的静态…...

unity学习47:寻路和导航,unity2022后版本如何使用 Navmesh 和 bake

目录 1 寻路和导航对移动的不同 1.1 基础的移动功能 1.1.1 基础移动 1.1.2 智能导航寻路 1.1.3 智能导航寻路还可以 2 如何实现这个效果&#xff1f; 2.1 通过地图网格的形式 2.1.1 警告信息 the static value has been deprecated的对应搜索 2.1.2 新的navigation ba…...

工作-绩效笔记

文章目录 销售项目经理研发项目管理人天拆分抓手评估人天如何拆的细而且有理有据管理等 对这个一直不感兴趣&#xff0c;干好活就行了&#xff0c;但是公司肯定是出于量化的指标&#xff0c;而且不同角色指标不一样&#xff0c;记录下也科普下自己。 销售 销售额 确收、回款 …...

GPT-SoVITS更新V3 win整合包

GPT-SoVITS 是由社区开发者联合打造的开源语音生成框架&#xff0c;其创新性地融合了GPT语言模型与SoVITS&#xff08;Singing Voice Inference and Timbre Synthesis&#xff09;语音合成技术&#xff0c;实现了仅需5秒语音样本即可生成高保真目标音色的突破。该项目凭借其开箱…...

WPF的页面设计和实用功能实现

目录 一、TextBlock和TextBox 1. 在TextBlock中实时显示当前时间 二、ListView 1.ListView显示数据 三、ComboBox 1. ComboBox和CheckBox组合实现下拉框多选 四、Button 1. 设计Button按钮的边框为圆角&#xff0c;并对指针悬停时的颜色进行设置 一、TextBlock和TextBox…...

Python项目源码34:网页内容提取工具1.0(Tkinter+requests+html2text)

------★Python练手项目源码★------- Python项目32&#xff1a;订单销售额管理系统1.0&#xff08;TkinterCSV&#xff09; Python项目31&#xff1a;初学者也能看懂的聊天机器人1.0源码&#xff08;命令行界面Re正则表达式&#xff09; Python项目源码30&#xff1a;待办事…...

javaSE学习笔记22-线程(thread)-线程通信、线程池

线程通信 应用场景&#xff1a;生产者和消费者问题 假设仓库中只能存放一件产品&#xff0c;生产者将生产出来的产品放入仓库&#xff0c;消费者将仓库中产品取走消费 如果仓库中没有产品&#xff0c;则生产者将产品放入仓库&#xff0c;否则停止生产并等待&#xff0c…...

vue单据打印 一维码、二维码实现

编码规则与 JavaScript 代码实现 编码规则数组&#xff1a;定义了 Code 128 条形码编码规则数组 BARS&#xff0c;其中每个数字对应一种条形码的线条组合模式。 const BARS [212222,222122,222221,121223,121322,131222,122213,122312,132212,221213,221312,231212,112232,12…...

远程控制macOS一直卡在100%,能连接上了却只显示了壁纸?

前言 前段时间有个朋友过来咨询关于Windows使用第三方远程软件&#xff08;向日葵、Todesk等&#xff09;远程连接控制macOS系统&#xff0c;但出现了一些奇奇怪怪的问题。 比如在连接的时候&#xff0c;一直卡在100%连接&#xff0c;对方的电脑却已经显示已经被控制的状态。…...

Spring Boot定时任务原理

Spring Boot定时任务原理 在现代应用中&#xff0c;定时任务的调度是实现周期性操作的关键机制。Spring Boot 提供了强大的定时任务支持&#xff0c;通过注解驱动的方式&#xff0c;开发者可以轻松地为方法添加定时任务功能。本文将深入探讨 Spring Boot 中定时任务的实现原理…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

用鸿蒙HarmonyOS5实现国际象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码&#xff0c;使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...

MeanFlow:何凯明新作,单步去噪图像生成新SOTA

1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架&#xff0c;旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念&#xff0c;这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换&#xff0c;显…...

中国政务数据安全建设细化及市场需求分析

(基于新《政务数据共享条例》及相关法规) 一、引言 近年来,中国政府高度重视数字政府建设和数据要素市场化配置改革。《政务数据共享条例》(以下简称“《共享条例》”)的发布,与《中华人民共和国数据安全法》(以下简称“《数据安全法》”)、《中华人民共和国个人信息…...