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,一经查实,立即删除!

相关文章

技术沙龙之液晶监视器和显示器

大家好&#xff01;前些天我的一个医疗信息化的同事问我一个问题&#xff0c;如何在安装系统中识别监视器和显示器&#xff1f;当时就出了一头的汗&#xff0c;我的个天什么意思啊&#xff1f; 搞了半天这哥们想知道两者的区别。还好以前做过UC和视频会议的工作对这些多少有些了…

LeetCode——866.回文素数

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

oracle 日志 LogMiner

http://hi.baidu.com/jinlijun_998/blog/item/be2ce10afeb92035b0351d7f.html -------------------------------------------------- Oracle日志查看一&#xff0e;Oracle日志的路径&#xff1a;登录&#xff1a;sqlplus "/as sysdba"查看路径&#xff1a;SQL> se…

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…

IDEA访问数据库时,某一个字段数据库中有值但是访问到的数据始终是null

问题描述 Request请求之后&#xff0c;页面返回了数据&#xff0c;其他字段都对&#xff0c;就那一个字段是null 排除问题 能访问到其他数据&#xff0c;说明IDEA连接数据库时成功了的&#xff0c;那不是数据库的问题就是字段本身的问题 存在的问题 字段类型&#xff0c;检…

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

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

LeetCode——350. 两个数组的交集 II

题目描述&#xff1a; 给定两个数组&#xff0c;编写一个函数来计算它们的交集。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2,2]示例 2: 输入&#xff1a;nums1 [4,9,5], nums2 [9,4,9,8,4] 输出&#xff1a;[4,9]说明&#x…

第八章 基本脚本编译

key words : 执行多个命令的方法 、 创建与执行脚本、反引号 、数学计算8.1 执行多个命令的方法:1、在每个命令间用;隔开[rootlocalhost ~]# date;who2011年 05月 29日 星期日 08:44:32 EDTroot :0 2011-05-29 08:32root pts/0 2011-05-29 08:33 (:0.…

LeetCode——面试题 08.01. 三步问题

题目描述&#xff1a; 三步问题。有个小孩正在上楼梯&#xff0c;楼梯有n阶台阶&#xff0c;小孩一次可以上1阶、2阶或3阶。 实现一种方法&#xff0c;计算小孩有多少种上楼梯的方式。 结果可能很大&#xff0c;你需要对结果模1000000007。示例1:输入&#xff1a;n 3 输出&am…

艾伟:ASP.NET 与 AJAX的实现方式

Ajax 应该不是一项技术&#xff0c;是一种思想而已&#xff0c;跟 ASP.NET 以及其它 Web 开发语言没有什么太大关系&#xff0c;这里只是谈谈 ASP.NET 中目前使用的 Ajax 技术以及其它一些实现 Ajax 的优秀框架。 Ajax 已经很流行一阵子了&#xff0c;现在谈 Ajax 觉得有点老土…

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

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

艾伟:WCF从理论到实践(2):决战紫禁之巅

本系列文章导航WCF从理论到实践(1)&#xff1a;揭开神秘面纱WCF从理论到实践(2)&#xff1a;决战紫禁之巅WCF从理论到实践(3)&#xff1a;八号当铺之黑色契约WCF从理论到实践(4)&#xff1a;路在何方WCF从理论到实践(5)&#xff1a;Binding细解WCF从理论到实践(6)&#xff1a;W…

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 &&…

黄聪:php中utf-8模板获取GB2312编码页面传递URL中文编码转换方法

$w中文参数; mb_convert_encoding($w, gb2312, utf-8)转载于:https://www.cnblogs.com/huangcong/archive/2011/09/03/2165339.html

狂神说JVM笔记

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

敏捷开发与中医理论系列之二:古法教学(软件教育,松结对编程,师徒制度)...

由来 中国古代的很多技术或艺术&#xff0c;都是没有学校教授的&#xff0c;譬如中医&#xff0c;戏曲&#xff0c;民间艺术&#xff0c;食品&#xff0c;酿酒……但却不乏流传千古的名家和作品&#xff0c;唯一问题就是流传缓慢&#xff0c;传内不传外&#xff0c;传男不传女……

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

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