当前位置: 首页 > wzjs >正文

网站转换模块怎么做企业营销推广怎么做

网站转换模块怎么做,企业营销推广怎么做,网站建设工厂,html5响应式网站源码目录 题目 解法一 双指针算法 原理 详细过程 为什么它有效? 时间复杂度与空间复杂度 代码 解法二 递归算法 核心思想 执行流程详解 具体例子 代码 题目 面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode) 解法一 双指针算…

目录

题目

解法一

双指针算法

原理

详细过程

为什么它有效?

时间复杂度与空间复杂度

代码

解法二

递归算法

核心思想

执行流程详解

具体例子

代码


题目

面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode)

解法一

双指针算法

原理

  1. 设置距离:快慢指针之间维持k个节点的固定距离
  2. 同步移动:当快指针到达链表末尾时,慢指针恰好指向倒数第k个节点

详细过程

初始化:两个指针fast和slow都指向链表头节点

   head -> 1 -> 2 -> 3 -> 4 -> 5 -> NULLfast^slow^

建立间距:让fast指针先走k步,建立k个节点的距离

   例如,k=2,fast先走2步head -> 1 -> 2 -> 3 -> 4 -> 5 -> NULLfast^slow^

同步移动:然后fast和slow同时向前移动,保持k个节点的距离

   第一步同时移动:head -> 1 -> 2 -> 3 -> 4 -> 5 -> NULLfast^slow^第二步同时移动:head -> 1 -> 2 -> 3 -> 4 -> 5 -> NULLfast^slow^第三步同时移动:head -> 1 -> 2 -> 3 -> 4 -> 5 -> NULLfast^slow^

找到结果:当fast指针到达NULL(链表末尾)时,slow指针恰好指向倒数第k个节点

   head -> 1 -> 2 -> 3 -> 4 -> 5 -> NULLfast^ (已经是NULL)slow^ (这就是倒数第2个节点)

为什么它有效?

这个方法之所以有效,是因为:

  • 如果链表长度为n,倒数第k个节点就是正数第(n-k+1)个节点
  • 当fast指针先走了k步,然后两个指针一起走,直到fast到达NULL(即走了n步)
  • 此时slow指针走了(n-k)步,所以它指向的是第(n-k+1)个节点,即倒数第k个节点

时间复杂度与空间复杂度

  • 一次遍历:只需要遍历链表一次,时间复杂度O(n)
  • 常数空间:只使用两个指针,空间复杂度O(1)
  • 无需知道链表长度:不需要预先计算链表的长度

代码

class Solution {
public:int kthToLast(ListNode* head, int k) {ListNode* fast = head;ListNode* slow = head;for(int i = 0;i < k;i++){head = head->next;fast = head;}while(fast != nullptr){fast = fast->next;slow = slow->next;}return slow->val;}
};

解法二

递归算法

核心思想

这种递归方法使用"后序遍历"的思想 - 先递归到链表末尾,然后在回溯过程中进行计数,找到倒数第 k 个节点。

执行流程详解

  1. 递进阶段:
  • 递归函数 dfs 首先检查当前节点是否为空
  • 如果不为空,继续递归调用自己,传入下一个节点:dfs(head->next, k)
  • 这个过程会一直进行,直到到达链表的末尾(遇到 nullptr)
  1. 回溯阶段:
  • 当到达链表末尾时,开始回溯
  • 每次回溯一层,计数器 count 加1
  • 当计数器等于指定的 k 值时,当前节点就是倒数第 k 个节点
  • 将这个节点的值保存到 ret 中

具体例子

假设链表为 1->2->3->4->5,k=2(寻找倒数第2个节点):

初始调用: kthToLast(head, 2)

  • 调用 dfs(head, 2),此时 count 为 0

递归调用展开:

   dfs(1) -> dfs(2) -> dfs(3) -> dfs(4) -> dfs(5) -> dfs(nullptr)

回溯过程:

  • dfs(nullptr) 检测到空节点,直接返回
  • 回到 dfs(5):count++ 变为 1,1≠2,继续回溯
  • 回到 dfs(4):count++ 变为 2,2=2,设置 ret = 4
  • 回到 dfs(3):count++ 变为 3,3≠2,继续回溯
  • 回到 dfs(2):count++ 变为 4,4≠2,继续回溯
  • 回到 dfs(1):count++ 变为 5,5≠2,继续回溯
  • 所有递归调用结束,ret 的值为 4

返回结果: kthToLast 返回 ret 的值,即 4

代码

class Solution {int ret;int count;
public:int kthToLast(ListNode* head, int k) {dfs(head,k);return ret;}void dfs(ListNode* head, int k){if(head==nullptr){return;}dfs(head->next,k);count++;if(k == count){ret = head->val;}}
};

http://www.dtcms.com/wzjs/469320.html

相关文章:

  • 百事通做网站seo搜索引擎优化工程师招聘
  • wordpress备份网站南宁百度首页优化
  • wordpress企业模板seo引擎优化专员
  • 酒生产企业网站建设的目的百度关键词热度
  • 手机版网站怎么上传seo建站技术
  • 建筑工程资质优化设计
  • 一个人做网站可以做什么怎样自己开发一款软件
  • 高校英文网站建设网络营销专业就业前景
  • 51网站一起做网店外贸推广
  • 为加强政协网站建设地推扫码平台
  • 辽宁住房与城乡建设厅网站郑州网站技术顾问
  • 长沙建网站企业最常用的网页制作软件
  • 数据网站怎么做测试彩虹云商城网站搭建
  • 网站域名解析后多久能生效简述网络营销的概念
  • 网站建设业务方法搜索引擎优化seo公司
  • qq交流群怎么升级会员seo是一种利用搜索引擎的
  • 青岛个人网站制作文案代写
  • 网站建设公司起名seo网站优化服务
  • 连云港做鸭网站免费代理浏览网页
  • 做网站需要什么费用今天国际新闻大事
  • 一个网站3个相似域名整合营销活动策划方案
  • qwins是哪个网站做的优化营商环境心得体会个人
  • 自助建站免费平台优化设计五年级下册数学答案
  • 网站建设解决问题百度代发收录
  • 网站的域名和密码百度点击器找名风
  • 网站内容维护费用视频外链工具
  • 做二手的网站都有哪些广州今天刚刚发生的重大新闻
  • wordpress媒体库图片不显示seo1视频发布会
  • 2017设计工作室做网站专业网站优化推广
  • 宁波有哪些公司做网站seo外链在线提交工具