首页 > TAG信息列表 > 倒数第

刷题 | 查找单链表倒数第k个结点

问题描述: 算法思想: 声明两个结点指针p和q,初始化时均指向链表第一个有效结点; 先令q保持不动,p指针遍历链表至第k个结点停止; 然后启动q指针,q和p从各自位置开始同时遍历链表,直至p遍历结束,此时q指针指向的即为链表倒数第k个位置上的结点。 代码实现(C语言): int SearchNode(LinkList he

Leetcode19 删除链表的倒数第N个结点

浅浅的一点感想 这题很明显用快慢指针就行了,但是有一些语法上的细节,就是我自己在写的时候报了个错 //源代码大概如下 ListNode* fast=head,*slow=head; while(fast->next!=nullptr){ slow=slow->next; fast=fast->next; } 第一次我这么写报错,说我没有对空指针判断,最后我在whi

获取字符串中倒数第二个特定字符的位置

开发场景中,有时候会遇到取文件路径中的文件夹名称,这些文件路径往往是 http 格式的,比如下面这样: https://img2020.cnblogs.com/blog/2413255/202112/2413255-20211206155717931-1767206212.png 这个文件夹名称往往是指倒数第 2 个 / 到最后一个 / 直接的内容,此时就需要获取字符串

【剑指Offer 22】链表中倒数第k个节点

/** * 剑指 Offer 22. 链表中倒数第k个节点 * https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ * * 思路:快慢指针 * */ public class Solution { public ListNode getKthFromEnd(ListNode head, int k) { ListNode prev = head;

力扣-19-删除链表倒数第N个结点/《剑指Offer》-22-链表中倒数第K个节点

可以看出,《剑指Offer》-22是力扣-19的子问题 找到链表中倒数第K个节点 《剑指Offer》-22,一次遍历单向链表得到倒数第K个结点的方法 从1开始倒数,那么倒数第K个节点即是正数第N-K+1个节点 这里还是使用同向双指针的办法 pointer1/pointer2都初始化为指向0,pointer1先开始走而pointer2

牛客网高频算法题系列-BM9-删除链表的倒数第n个节点

牛客网高频算法题系列-BM9-删除链表的倒数第n个节点 题目描述 给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针 原题目见:BM9 删除链表的倒数第n个节点 解法一:双指针法 首先,考虑两种特殊情况: 如果原链表为空,直接返回null。 如果k不是正数,直接返回null。 否则,使用双

【链表】【leetCode高频】: 19. 删除链表的倒数第 N 个结点

1、题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。       2、算法分析 知识补充: 。      分析: 题目要求是删除链表中倒数第N个结点。可以使用两个指针slow,fast。 重点是找到被删除结点的前一个结点。 ①定义一个头结点指向head ②slow指向头结点

【链表】leetcode 19. 删除链表的倒数第 N 个结点【中等】

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例1:   输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1输出:[] 示例 3: 输入:head = [1,2], n = 1输出:[1]  提示: 链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 1001 <= n <=

寻找链表中的倒数第K个节点

一、题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点 二、思路 首先,通过指针p遍历链表,得

LeetCode 剑指 Offer 22. 链表中倒数第k个节点

剑指 Offer 22. 链表中倒数第k个节点 题意 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 ​ 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6,则这个链表的倒数第 3 个节点是值为 4 的

单链表练习2:查找倒数第k个元素

一些思考: 关于k,我自己一开始只想到scanner,老师用的是方法传参 public Class Test内,main方法外 解法1: //查找单链表中的倒数第k个结点 //思路 //1.编写一个方法,接收head结点,同时接收一个index //2.index表示是倒数第index个结点 //3.先把链表从头到尾遍历,得到链表的总的长

【剑指 Offer 22. 链表中倒数第k个节点】

双指针 题目描述 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 示例: 给定一个链表

[ 链表OJ题 4 ] 输入一个链表,输出该链表中倒数第k个结点。

目录 题目来源: 代码实现: 分析过程: 错误分析:​ 题目来源: 链表中倒数第k个结点_牛客题霸_牛客网 (nowcoder.com) 题目描述: 代码实现: struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) { struct ListNode* slow,* fast; slow = fast = pListHead;

LeetCode:删除链表的倒数第 N 个结点

前言:          “删除链表的倒数第 N 个结点”的题目是力扣题库上的第19题。我是使用Python3编写的解法,性能算不上好,在此仅仅只是阐述一下解法编程思想。仅供参考~ (PS:文末附录附带了本题C语言的代码,思路大概是差不多的~)         解法上可能会跟别人相同,所以要

c笔试题-删除链表的倒数第 n 个结点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。   * struct ListNode { * int val; * struct ListNode *next; * };   这段代码运行结果: 输入[1,2,3,4,5] 2 输出[1,2,3,4] 预期结果[1,2,3,5] struct ListNode* removeNthFromEnd(struct ListNode* h

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点

public ListNode removeNthFromEnd(ListNode head, int n) { ListNode before = head; ListNode after = head; if(head==null){ return null; } while(n!=0){ before = before.next;

算法之链表倒数第k个节点

     分析和思路:这个需要自己创建链表 1 #include "iostream" 2 3 using namespace std; 4 struct ListNode 5 { 6 7 int m_nKey; 8 9 ListNode* m_pNext; 10 11 }; 12 13 14 int main() 15 { 16 ListNode* head; 17 head = (ListNode*)mall

寻找单链表倒数第K个节点

单链表只能从前往后跑,不能从后往前 ,因此我们申请两个指针p,q,让q指针先向前走K步,然后两个指针同时向后跑,当q指针跑到NULL时,q指针所处的位置就是我们要寻找的倒数第K个节点 //找到单链表倒数第K个节点 struct Node* Get_K_Node(PNode plist, int K) { assert(plist != NULL); as

链表中双指针的运用之一(删除链表倒数第n个元素)

因为链表事先不知道有多少个,所以不知道当前遍历时是倒数第几个 不用双链表的时候需要先遍历一遍找到一共有几个元素,然后通过int值来控制位置,最后删除 更好的做法使用快慢指针,让快指针事先领先慢指针n+1个位置(多+1是为了删除时慢指针在待删除元素的前面,方便删除) 这样当快指

链表-删除链表的倒数第N个节点(双指针法)

题目 https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 19.删除链表的倒数第N个节点 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:he

删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。   示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1]   提示: 链表中结点的数目为 sz

【LeetCode】19. 删除链表的倒数第 N 个结点

class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode *dummy=new ListNode(0); ListNode *front=head,*target=dummy; dummy->next=head; for(int i=0;i!=n;++i){ front=front->n

删除链表的倒数第k个结点

删除链表的倒数第k个结点 问题重述: 给你一个链表,删除链表的倒数第 k 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], k = 1 输出:[] 示例 3: 输入:head = [1,2], k = 1 输出:[1] 提示: 链表中结点的数目为 sz 1 <= sz

JAVA练习148-返回倒数第 k 个节点

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 注意:本题相对原题稍作改动 示例: 输入: 1->2->3->4->5 和 k = 2 输出: 4 说明: 给定的 k 保证是有效的。 分析: 方法1:朴素解法 这道题最简单粗暴的方式就是用List集合存储每一个节点,然后再返回倒数第 k 个节点的值即可

Leetcode19. 删除链表的倒数第 N 个结点(中等)双指针

struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ struct ListNode* dummyHead = (struct ListNode*)malloc(sizeof(struct ListNode)); dummyHead->next = head; struct ListNode*slow=dummyHead,*fast=dummyHead; for