LeetCode——1721.交换链表中的节点

在这里插入图片描述
方法一:好理解,但是需要遍历三次链表

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode swapNodes(ListNode head, int k) {ListNode ahead = new ListNode(0,head);ListNode current = ahead;ListNode topK = new ListNode(0,null);ListNode botK = new ListNode(0,null);int count = 0;//第一次遍历,找到正数第K个节点,然后用一个新的节点暂存信息,同时求得总节点个数while(current.next!=null){count++;current = current.next;if(count==k){topK.val = current.val;topK.next = current.next;}}//count为总节点个数//第二次遍历找到倒数第K个节点,然后用一个新的节点暂存信息//正数是k,倒数换成正数就应该是链表的长度-k+1current = ahead;int increase = 0;while(current.next!=null){increase++;current = current.next;//找到倒数第K个节点,然后用一个新的节点暂存信息if(increase ==(count+1-k)){botK.val = current.val;botK.next = current.next;}}current = ahead;int num = 0;//第三次遍历,交换两个节点while(current.next!=null){num++;current = current.next;if(num==k){current.val= botK.val;//current.next=current.next;//仅仅是交换的节点的val值}if(num==(count+1-k)){current.val=topK.val;//current.next=current.next;}}return ahead.next;}
}

方法二,值遍历一次,但是要注意指针的挪动次数关系的理解

 /**声明三个节点cur、first、last全部指向head节点利用current从头结点开始遍历链表,topK指针移动k - 1步后定位至该链表正数第k个节点,设链表的节点个数为nums,当first指针指向第k个节点时,此时链表还有nums - k个节点没有遍历。因为链表的头节点到倒数第k个节点之间的节点个数刚好也是nums - k个,所以当遍历到正数第k个节点后,botK指针开始从head节点移动nums - k步后即指向了倒数第k个节点。
*/  
class Solution {public ListNode swapNodes(ListNode head, int k) {ListNode current = head;ListNode topK = head;ListNode botK = head;int count = 1;while(current.next!=null){           if(count<k){topK = topK.next;}else{botK = botK.next;}count++;current = current.next;}//交换两个节点int temp = topK.val;topK.val = botK.val;botK.val = temp;return head;}
}

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

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

相关文章

LeetCode——866.回文素数

分析&#xff0c;这个题目本身不难&#xff0c;用数学方法很容易解出来&#xff0c;问题是当给的数据过大时&#xff0c;容易超时。 数学法&#xff1a;遍历所有数字&#xff0c;检查是不是回文串。如果是&#xff0c;检查是不是素数&#xff0c;如果当前数字长度为 8&#xff…

Cannot resolve jakarta.validation:jakarta.validation-api:2.0.2

在SpringCloud中引入Eureka依赖时报错 Cannot resolve jakarta.validation:jakarta.validation-api:2.0.2 在maven里面只要引入了Eureka的地方全部报红线 后面看见引入Eureka包pom报红这篇博文说&#xff0c;在maven仓库里面我添加的依赖已经过时了。去官网看&#xff0c;也确…

分享Silverlight/WPF/Windows Phone一周学习导读(8月15日-8月19日)

分享Silverlight/WPF/Windows Phone一周学习导读(8月15日-8月19日) 本周Silverlight学习资源更新&#xff1a; Silverlight Tools 4安装时的错误提示 happy_0812 Silverlight带关闭动画的内容控件&#xff0c;可移动的内容控件&#xff08;二&#xff09; 豆豆狗 未安装Silverl…

知识库如何跟其他业务系统结合

很多企业在建立自己的知识库之前就有了很多业务系统&#xff0c;知识库建好以后&#xff0c;却不知道该如何跟自己的业务系统相结合。KMaster提供了几点知识库跟业务系统相结合的经验&#xff0c;供大家参考。 1. web插件的形式。 在业务系统中引用知识库提供的js文件&am…

IDEA中的模块被识别为普通文件夹,图标为灰色的

现象&#xff1a; 所有图标都是灰色&#xff0c;不被识别为模块 解决办法&#xff1a; 打开settings—> Build,Execution,deployment—>maven —>ignored Files —>然后把你出问题的项目勾掉就恢复正常了额,图标啥的都恢复了

LeetCode——LCP 06.拿硬币

这个题简单到我觉得不用写思路&#xff0c;也没有啥坑。 class Solution {public int minCount(int[] coins) {int len coins.length;int count 0;for(int i0;i<len;i){countcoins[i]/2;if(coins[i]%20){continue;}else{count1;}}return count;} }

Linux 定时执行命令 crontab

语法介绍 使用权限 : root用户和crontab文件的所有者    crontab格式语法: crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]    说明 : crontab 是用来让使用者在固定时间或固定间隔执行程式之用&#xff0c;换句话说&#xff0c;也就是类似使用…

LeetCode——1710. 卡车上的最大单元数

力扣上提交的代码 class Solution {public int maximumUnits(int[][] boxTypes, int truckSize) {int res 0;//存储可以装载单元的最大总数//根据二维数组的第二列数据降序排列Arrays.sort(boxTypes,(o1, o2) -> o2[1]-o1[1]);for (int i 0; i<boxTypes.length &&…

狂神说JVM笔记

JVM探究 面试常见&#xff1a; 请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新?什么是OOM&#xff0c;什么是栈溢出StackOverFlowError? 怎么分析?JVM的常用调优参数有哪些?内存快照如何抓取&#xff0c;怎么分析Dump文件&#xff1f;谈谈JVM中&#xff0c;类加载器…

Xshell连接远程Linux服务器失败Could not connect to ‘192.xxx.xx.xxx‘ (port 22): Connection failed.

问题描述&#xff1a; 我将自己的一台Ubuntu系统笔记本作为服务器&#xff0c;然后使用另一台win10系统的Xshell去远程连接该服务器&#xff0c;始终不成功。 【备注】这个远程连接解决的是同一局域网中的远程&#xff0c;算不上真正的远程&#xff0c;在判断两者之间可否远程…

XShell远程连接LInux服务器(地址端口映射方法)

所实现的功能&#xff1a; 这篇文章主要是记录我在非同一局域网下用win10系统的Xshell去连接Linux系统服务器。 环境&#xff1a;一台win10主机&#xff0c;已安装好Xshell7&#xff0c;局域网ip:192.168.0.132 一台Linux主机&#xff0c;将其作为远程服务器使用&#xff0c;…

IDEA部署Tomcat报错[RMI TCP Connection(6)-127.0.0.1]

> 严重 [RMI TCP Connection(6)-127.0.0.1] > org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file该错误出现的原因是Tomcat初始化失败。 一定一定要检查…

maven仓库理解、下载及设置

1、对maven仓库的理解&#xff1a; 可以看萨姆大叔的maven知识整理 2、下载apach maven Download 或者复制地址&#xff1a;http://maven.apache.org/download.cgi 3、IDEA中maven的setting 第六步是本地资料库的目录设置&#xff0c;如果你解压出来的maven安装包没有reposit…

Failed to load resource: the server responded with a status of 404 (Not Found)

现象描述&#xff1a; 从前端页面获取不到来自controller层的data数据&#xff0c;即前端页面和后台没有实现数据交互。 检查发现&#xff1a; 工程中的out目录下没有生成对应的.java文件&#xff0c;但是模块中的target中有 目录是空的&#xff01;&#xff01;&#xff…

JavaWeb关于工程运行的笔记

1、不同IDEA版本创建web部署的方式不同 IDEA2020.3&#xff1a;Idea2020.2.3 创建JavaWeb项目(部署Tomcat)方法 IDEA2020.2&#xff1a;Idea2020.2创建JavaWeb项目(部署Tomcat)方法 注意&#xff1a; 1、在已有工程中创建javaWeb模块也是一样的步骤去部署Tomcat方法。 2、可以…

Xshell使用root用户连接Linux

遇到问题&#xff1a; 我在本地使用 Xftp 向远程 Linux 服务器上传文件时&#xff0c;显示状态 “错误”&#xff0c;经过上网查询说&#xff0c;需要 Xshell 使用 root 用户远程登录才可以传输文件。我的 Linux 服务器系统为 Ubuntu 的系统&#xff0c;本地 Xshell 用 root 用…

检测Java对象所占内存大小 (转载)

2019独角兽企业重金招聘Python工程师标准>>> Dont pay the price for hidden class fields By Vladimir Roubtsov, JavaWorld.com, 08/16/02 Recently, I helped design a Java server application that resembled an in-memory database. That is, we biased the d…

股价涨跌分析程序

http://www.iteye.com/topic/1114623

图形处理工具:Photoshop Elements 2020 mac介绍说明

Photoshop Elements 2020 mac简称ps elements 2020&#xff0c;是一款图形处理工具。ps elements 2020 mac可以帮助您自动生成照片和视频作品的功能&#xff0c;采用Sensei AI技术可进行图像组织、编辑和创建等。Photoshop Elements 2020 可以帮助您轻松整理照片和视频&#xf…

Linux版本tomcat下载及安装

下载&#xff1a; ssm war 就需要放在tomcat中运行。 下载地址&#xff1a;http://www.apache.org/ 打开之后进入了Apache官网界面&#xff1a; 一直往下拉&#xff0c;找到我们要的Tomcat 点击tomcat进入其主页面&#xff1a; http://tomcat.apache.org/ 找到我们要下载的版…