LeetCode876 --- 剑指Offer 22
题目描述:LeetCode876
非空链表,我们不需要判断为空的条件。
思路:
需要得到链表的中间节点,也许会想到,将链表遍历一遍,求出长度,再遍历一遍得到中间节点。如果只能遍历一遍呢?中间节点,也就是链表长的二分之一,那就可以通过定义两个指向,都从head开始向后遍历。fast一次向后挪两个节点,slow一次向后挪动一个节点。当fast为null或者fast.next为null,代表着fast已经走到终点,而此时的slow恰好就遍历了一半链表,此时slow就处于中间节点的位置。
代码:
/*** 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 middleNode(ListNode head) {ListNode fast=head;ListNode slow=head;while( fast!=null && fast.next!=null){fast=fast.next.next;slow=slow.next;}return slow;}
}
题目描述:剑指Offer22
思路:
几乎和上面一致,不过此时的slow和fast起点不同,因为当fast到重点时,slow要比fast少k-1步。fast和slow每次都走一步,因为它们的距离差已经确定,所以速读要一致。
代码:
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/
class Solution {public ListNode getKthFromEnd(ListNode head, int k) {if(head==null){return null;}ListNode fast=head;ListNode slow=head;while(k-1>0){if(fast==null || fast.next==null){return null;}fast=fast.next;k--;}while(fast!=null && fast.next!=null){fast=fast.next;slow=slow.next;}return slow;}
}
LeetCode876 --- 剑指Offer 22相关推荐
- 【每日一题】剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点
- 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点
[LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...
- 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)
19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...
- 剑指 Offer 22(链表4).链表中的倒数第k个结点
剑指 Offer 22(链表4).链表中的倒数第k个结点 问题描述: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链 ...
- 剑指offer——22.链表中倒数第k个节点
题目: 输入一个链表,输出该链表中倒数第k个结点. 知识点: 注意这种想法:找倒数第几个.中间的数或三分之一的数这种题,可以利用两个指针,通过指针移动的不同方式来实现 注意: 还是考虑的情况要周全,此 ...
- Leetcode 剑指offer 22. 链表中第k个节点 (每日一题 20210716)
输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6. ...
- 剑指 Offer 22. 链表中倒数第k个节点(C语言)
输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6 ...
- 【双100%解法】剑指 Offer 22. 链表中倒数第k个节点
立志用最少的代码做最高效的表达 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的 ...
- 【算法】剑指 Offer 22. 链表中倒数第k个节点
1.概述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3. ...
最新文章
- 计算机工程学院运动会方阵口号,关于校运会的方阵口号
- 雷观(六):码农值千金
- 常见的新算法的标准测试函数(Ackely,Rastrigin,Griewangk,SumSquartes,Sphere,Quartic,Schwefel' Problem等)
- java将图片(jpg/bmp/png)转16位bmp(RBG565)
- Linux 常用命令大放送
- Linux nmon 命令
- stm32气压传感器 带探头的_几种常用传感器
- 正本清源:LBS(基于位置服务)技术——高精准IP地址定位的8大误区(下)
- HTTP协议和TCP/IP协议与Socket之间的区别
- WPS中添加页眉和页脚
- 动画设计与制作——3D Max场景建模《我的家》V-Ray 4.1
- python搭建自己的网站_Python+Django搭建自己的blog网站
- Antd 修改 Table 悬浮颜色、表头背景色
- python lncrna_[转载]lncrna分析流程
- win10与xp/win7 局域网不通的修改方法
- Android P (9.0)刘海屏(DisplayCutout)适配方法
- JQ局域网通信软件(C/S)
- LeetCode 695. 岛屿的最大面积
- C#实现压缩与解压缩方案
- 网络安全学习2个月,感觉什么都不会?