如何推广智能科技网站的模板以吸引用户下载App?
摘要:智能科技网站模板,快推广app下载,网站怎么推广最,网店交易平台网站建设 📝个人主页:Sherry的成长之路 🏠学习社区&#x
智能科技网站模板,快推广app下载,网站怎么推广最,网店交易平台网站建设 #x1f4dd;个人主页#xff1a;Sherry的成长之路 #x1f3e0;学习社区#xff1a;Sherry的成长之路#xff08;个人社区#xff09; #x1f4d6;专栏链接#xff1a;数据结构 #x1f3af;长路漫漫浩浩#xff0c;万事皆有期待 文章目录链表OJ题(三)1. 链表… 个人主页Sherry的成长之路 学习社区Sherry的成长之路个人社区 专栏链接数据结构 长路漫漫浩浩万事皆有期待 文章目录链表OJ题(三)1. 链表中倒数第k个结点思路1--两次遍历思路2-快慢指针2.总结上一篇链表OJ题链接【链表OJ题(二)】链表的中间节点
链表OJ题(三)
1. 链表中倒数第k个结点
链接链表中倒数第k个结点
描述 输入一个链表输出该链表中倒数第k个结点。
示例1: 输入 1,{1,2,3,4,5} 返回值 {5} 思路1–两次遍历
和求链表的中间节点的方法一相似为直接法。
要求链表的倒数第 k 个节点那么就是删除链表正数第 len(链表长度) - k 1 个节点。
举个例子例如链表长度为 5删除倒数第 2 个节点就是删除链表正数第 4 个节点推导出来就是第 len 1 - k 个节点。 所以只要先算出链表长度然后遍历到 len 1 - k 个节点返回即可。
注意 1.在计算出链表总长度lenk或k0时直接返回NULL。 2.传递的是空链表直接返回NULL
/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*/
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k )
{struct ListNode*cur,*ans;curanspListHead;int len0;while (cur) {curcur-next;len;}if(k0||klen)return NULL;for (int i0; ilen-k; i) {ansans-next;}return ans;
}既然这道题目也可以用直接法那么能否也适用于快慢指针事实上可以而且这道题的方法也很巧妙接下来看思路2
思路2-快慢指针
在上一篇博客中我们也使用了快慢指针 给定一个快指针 fast 和一个慢指针 slow我们要求链表倒数第 k 个节点那么我们就先让快指针走 k 步然后让 fast 和 slow 一起走当 fast 走到空指针这时 slow 为倒数第 k 个节点。
那么这里的原理是什么呢 首先让 fast 走 k 步让 fast 和 slow 的间隔为 k。链表的倒数第 k 个节点就是正数 len 1 - k 个节点那么当 fast 走到空指针后链表走完那么现在 fast 走的距离就相当于链表的长度len 1fast 和 slow的间隔为 k 那么现在的 slow 就为正数 len 1 - k个节点这时返回 slow就是倒数第 k 个节点。
注意如果在 fast 走 k 步的过程中fast 迭代为了空指针这时直接返回空指针。
代码
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k )
{struct ListNode* fast, *slow;fast slow pListHead;if (pListHead NULL)return NULL;// fast 先走 k 步while (k--)//走k次--k走k-1次{// 放置 fast 先走到空if (fast NULL){return NULL;}fast fast-next;}// 迭代while (fast){slow slow-next;fast fast-next;}return slow;
}2.总结
今天我们通过两种思路分析并完成链表中倒数第k个结点这道链表OJ题目也更加深层次了解和使用了快慢指针这个思路在之后的题目中将再次出现它的使用。希望我的文章和讲解能对大家的学习提供一些帮助。 当然本文仍有许多不足之处欢迎各位小伙伴们随时私信交流、批评指正我们下期见~
