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

[86] 分割链表

题目链接:86. 分隔链表 - 力扣(LeetCode)

第一种方法:类似双指针

自己想的,不知道读者是否能看懂,参考注释

ListNode* partition(ListNode* head, int x) {ListNode* bigpos = nullptr;ListNode* littlepos = nullptr;ListNode* res2 = head;while(head != nullptr){//用两个临时变量记录当前的node和node->nextListNode* tmp1 = head;ListNode* tmp2 = head->next;//如果当前node小于目标值,就要放在little那一部分if(head->val < x){//如果第一次扫到小值部分if(littlepos == nullptr){//直接赋值给littleposlittlepos = tmp1;//如果bigpos已经有值,那么需要把第一个littlepos放在链表第一个//bigpos->next指向当前node的下一个位置,即tmp2//而且要记得更新链表头res2,需要返回if(bigpos){bigpos->next = tmp2;tmp1->next = res2;res2 = tmp1;}}else//不是第一次扫到小值{//如果是littlepos->next = tmp1,说明是连续扫到的小值,并且目前链表只有小值//无须下列步骤,直接可以更新littlepos位置if(littlepos->next != tmp1){//把当前node->next指向littlepos->nexttmp1->next = littlepos->next;//littlepos->next需要指向当前nodelittlepos->next = tmp1;//如果此时bigpos有值,则需要把bigpos->next指向当前node->next,即tmp2//if(bigpos) 这里不需要判断bigpos//走到这里,littlepos->next与当前node不相同,bigpos肯定有值了bigpos->next = tmp2;}//更新littlepos的位置littlepos = tmp1;}}//大值都在后边,bigpos直接更新elsebigpos = tmp1;head = tmp2;//更新head的值}return res2;}

第二种方法:双指针

创建两个链表头,把以target为目标的分到两个链表中

ListNode* partition(ListNode* head, int x) {ListNode* littleList = new ListNode(-1);ListNode* bigList = new ListNode(-1);ListNode* res = littleList;ListNode* bigFront = bigList;int i = 0;while(head){if(head->val < x){littleList->next = head;littleList = littleList->next;head = head->next;littleList->next = nullptr;}else{bigList->next = head;head = head->next;bigList = bigList->next;bigList->next = nullptr;}//这里非常容易出问题,看着类同的代码,如果拿出来就会出错//因为这里是指针类型,littleList和bigList均为当前的head//上述结束之后,如果放在这里更新head,head->next已经为空了//head = head->next;}littleList->next = bigFront->next;return res->next;}

相关文章:

[86] 分割链表

题目链接&#xff1a;86. 分隔链表 - 力扣&#xff08;LeetCode&#xff09; 第一种方法&#xff1a;类似双指针 自己想的&#xff0c;不知道读者是否能看懂&#xff0c;参考注释 ListNode* partition(ListNode* head, int x) {ListNode* bigpos nullptr;ListNode* littlep…...

【python】 清空socket缓冲区

在Python中使用Socket进行网络通信时&#xff0c;可以通过调用socket.recv()函数来接收数据&#xff0c;数据会被存储在缓冲区中。有时候&#xff0c;可能想要先清空缓冲区&#xff0c;以便后续的数据不会被之前的数据影响。以下是一种清空Python Socket缓冲区的方法&#xff1…...

108、RocketMQ的底层实现原理(不需要长篇大论)

RocketMQ的底层实现原理 RocketMQ由NameServer集群、Producer集群、Consumer集群、Broker集群组成&#xff0c;消息生产和消费的大致原理如下: Broker在启动的时候向所有的NameServer注册&#xff0c;并保持长连接&#xff0c;每30s发送一次心跳Producer在发送消息的时候从Na…...

怎么把PDF转为word?1分钟解决难题

PDF文件在我们的电脑上应用非常广泛&#xff0c;由于其较高的安全性和兼容性&#xff0c;得到了广泛的认可。然而&#xff0c;对于一些人来说&#xff0c;PDF文件不能直接进行编辑和修改可能是一个问题。因此&#xff0c;通常我们需要将其转换为Word格式&#xff0c;以便在Word…...

Mysql权限-系统表user,db,talbes_priv,columns_priv详解

一、MySQL 权限场景 可以根据登录用户限制用户访问资源(库、表)可以根据登录用户限制用户的操作权限(能对哪些库、表执行增删改查操作)可以指定用户登录IP或者域名可以限制用户权限分配 二、Mysql五个层级权限级别分析 Mysql权限级别分为了五个层级&#xff0c;并且每个级别…...

GPT-4 模型详细教程

GPT-4&#xff08;Generative Pretrained Transformer 4&#xff09;是 OpenAI 的最新语言生成模型&#xff0c;其在各类文本生成任务中表现优秀&#xff0c;深受开发者和研究者喜爱。这篇教程将帮助你理解 GPT-4 的基本概念&#xff0c;并向你展示如何使用它来生成文本。 什么…...

智慧环保:创造绿色未来

随着全球环境问题的日益严重&#xff0c;智慧环保成为推动绿色发展的关键。智慧环保利用先进的技术手段和智能化设备&#xff0c;致力于解决环境问题&#xff0c;保护生态环境&#xff0c;实现可持续发展。它融合了物联网、人工智能、大数据等技术&#xff0c;将科技的力量与环…...

虚拟 DOM和render()函数和Vue.js模板语法

[TOC](虚拟 DOM和render()函数) 1. 虚拟DOM 虚拟DOM是Vue中非常重要的概念&#xff0c;它是一个虚拟的内存中的数据结构&#xff0c;用来表示真实的DOM树。Vue使用虚拟DOM来减少对真实DOM的操作次数&#xff0c;从而提高页面的性能。 虚拟DOM的工作原理如下&#xff1a; Vu…...

k8s Service网络详解(一)

k8s Service网络详解&#xff08;一&#xff09; 有关K8s网络的几个概念K8s网络模型k8s网络插件ServiceService的访问方式Service的种类无头服务&#xff08;Headless Services&#xff09;带选择算符的服务无选择算符的服务 Service的类型ClusterIPNodeportLoadBalancerExtern…...

抖音账号矩阵系统开发源码

一、技术自研框架开发背景&#xff1a; 抖音账号矩阵系统是一种基于数据分析和管理的全新平台&#xff0c;能够帮助用户更好地管理、扩展和营销抖音账号。 部分源码分享&#xff1a; ic function indexAction() { //面包屑 $breadcrumbs [ [tit…...

Python+Texturepacker自动化处理图片

前言 本篇在讲什么 PythonTexturepacker自动化处理图片 本篇需要什么 对Python语法有简单认知 依赖Python2.7环境 依赖Texturepacker工具 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全流程的源码内容 ★提高阅读体验★ &…...

K8s Service网络详解(二)

K8s Service网络详解&#xff08;二&#xff09; Kube Proxy调度模式Kube-proxy IptablesKube-proxy IPVS Service SelectorPod DNS种常见的 DNS 服务Kube-DNSCoreDNSCorefile 配置 DNS 记录DNS 记录 ServiceDNS 记录 PodDNS 配置策略 Pod 的主机名设置优先级 Ingress Kube Pro…...

Rust vs Go:常用语法对比

这个网站 可以列出某门编程语言的常用语法&#xff0c;也可以对比两种语言的基本语法差别。 在此对比Go和Rust 1. Print Hello World 打印Hello World package mainimport "fmt"func main() { fmt.Println("Hello World")} fn main() { println!("…...

Vlan端口隔离(第二十四课)

一、端口隔离 1、端口隔离技术概述 1)端口隔离技术出现背景:为了实现报文之间的二层隔离,可以将不同的端口加入不同的VLAN,但这样会浪费有限的VLAN ID资源。 2)端口隔离的作用:采用端口隔离功能,可以实现同一VLAN内端口之间的隔离。 3)如何实现端口隔离功能:只需要…...

js实现框选截屏功能

实现的思路大概就是&#xff0c;先将dom转化为canvas画布&#xff0c;再对canvas进行裁切&#xff0c;然后通过canvas api生成图片&#xff0c;这里用到了一个库html2canvas 效果如图&#xff1a; 首先实现框选效果&#xff1a; const mousedownEvent (e) > {moveX 0;mo…...

Manjaro Linux 连接公司的 VPN 网络

注意&#xff1a;如果你公司的 VPN 网络是在苹果下使用的&#xff0c;本文可能不适用&#xff08;苹果系统不支持 PPTP&#xff09;。 用 Linux 和用 Windows/macOS 不一样&#xff0c;它真的需要用户操心很多东西。比如怎么连接公司的 VPN 网络…… 我是折腾了挺久&#xff0…...

Ama no Jaku

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;有一个n*n且仅由0和1构成的矩阵&#xff0c;每次操作可以将一整行或一整列的所有数取反&#xff0c;问能否使所有行中构成的最小数>所有列中构成的最大数 1<n<2000 思路&#xff1a;首先&#xff0c;如果…...

视频基础知识

1.视频比特率 视频的比特率是指传输过程中单位时间传输的数据量。可以理解为视频的编码采样率。单位是kbps&#xff0c;即每秒千比特。视频比特率是决定视频清晰度的一个重要指标。比特率越高&#xff0c;视频越清晰&#xff0c;但数据量也会越大。比如一部100分钟的电影&#…...

安全渗透初级知识总结

Day1&#xff1a; xss详解&#xff1a;web攻防之XSS攻击详解——XSS简介与类型 - 知乎 (zhihu.com) Cookie&#xff1a;身份验证 网页元素属性&#xff1a; id&#xff1a; class&#xff1a;样式名称 console.log(div_class);----打印标签 tabindex"0"---这是…...

rocketmq客户端本地日志文件过大调整配置(导致pod缓存cache过高)

现象 在使用rocketmq时&#xff0c;发现本地项目中文件越来越大&#xff0c;查找发现在/home/root/logs/rocketmqlog目录下存在大量rocketmq_client.log日志文件。 配置调整 开启slf4j日志模式&#xff0c;在项目启动项中增加-Drocketmq.client.logUseSlf4jtrue因为配置使用的…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...