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

秋招突击——6/17——复习{整理昨天的面试资料}——新作{删除链表倒数第n个节点}

文章目录

    • 引言
    • 复习
    • 新作
      • 删除链表倒数第N个节点
        • 题目描述
        • 个人实现
        • 参考实现
    • 总结

引言

  • 主管面,面的很凄惨,不过无所谓了,我已经尽力了。上午都在整理的面经,没有复习算法,而且这两天要弄一下论文,二十号就要提交了,可能都没有复习了,只有新作。

复习

  • 这里是复习了昨天主管面的所有的问题,还有对应的算法题,不过由于结果还没出,要保密,这里就不说了。

新作

删除链表倒数第N个节点

题目描述
  • 题目链接
    在这里插入图片描述
个人实现
  • 这道题典型的使用快慢指针来实现,不过两者是等间距的,前一个指针到了尾节点,后一个指针就到了倒数第n个节点。
  • 有两个需要注意的地方
    • 需要维持一个快慢指针之间的间距
    • 需要找到倒数第n个指针的前一个指针,才能把倒数第n个指针删除

正常通过
在这里插入图片描述
具体实现代码

#include <iostream>using namespace std;struct ListNode{int val;ListNode* next;ListNode(int x):val(x),next(NULL){};ListNode(ListNode* t):val(-1),next(t){};
};ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode preHead = ListNode(-1,head);ListNode* ahead = &preHead;ListNode* back = &preHead;int dist = 0;while(back->next){if (dist < n) back = back->next,dist ++;else{ahead = ahead->next;back = back->next;}}// 将对应指针删除ahead->next = ahead->next->next;// delete preHead;return preHead.next;
}int main(){}
参考实现
  • 他是完整遍历一遍,获取链表的长度,然后找倒数第n个指针,时间复杂度是一样,我这样写也是遍历了两次,没什么更快的。
  • 我又愚蠢了,其实都是一样的,我那样写反而复杂了。
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int k) {auto dummy =new  ListNode(-1);dummy->next = head;int n = 0;for(auto p = dummy;p;p = p->next) n ++;auto p = dummy;for(int i = 0;i < n - k - 1;i ++) p = p->next;p->next = p->next->next;return dummy->next;}
};

总结

  • 今天的题目过得有点快,不往下做了。早点睡觉,背一下八股。

相关文章:

  • Jmeter多个请求按照比例并发压测的几种方式
  • POI:接收上传上来的excel,解析并导入到数据库
  • Kafka中的时间轮算法
  • 2024广东省职业技能大赛云计算赛项实战——Ansible部署Zabbix
  • error: the type ‘const zjloc::<lambda(const Vec2i, const Vec2i)>’
  • JAVA NIO(二) Buffer和Channel
  • Elasticsearch:倒数排序融合 - Reciprocal rank fusion - 8.14
  • go的有栈和无栈
  • C#开发-集合使用和技巧(一)常用集合和方法介绍
  • 设计模式——访问者模式
  • python从入门到精通1:注释
  • Android 屏幕适配
  • python_根据关键词匹配文件中的数据并绘图
  • python学习—字典(Dictionary)
  • 【自动驾驶】运动底盘状态数据:里程计、IMU、运动学分析、串口通信协议
  • 【Leetcode】104. 二叉树的最大深度
  • 【个人向】《HTTP图解》阅后小结
  • Flex布局到底解决了什么问题
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaWeb(学习笔记二)
  • learning koa2.x
  • Vue全家桶实现一个Web App
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 简单实现一个textarea自适应高度
  • 利用DataURL技术在网页上显示图片
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 入门级的git使用指北
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • ( 10 )MySQL中的外键
  • (2015)JS ES6 必知的十个 特性
  • (undone) MIT6.824 Lecture1 笔记
  • (二)构建dubbo分布式平台-平台功能导图
  • (三)模仿学习-Action数据的模仿
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .net core 依赖注入的基本用发
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Core引入性能分析引导优化
  • .Net Winform开发笔记(一)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .net快速开发框架源码分享
  • .NET学习教程二——.net基础定义+VS常用设置
  • .NET中两种OCR方式对比
  • @font-face 用字体画图标
  • @KafkaListener注解详解(一)| 常用参数详解
  • @在php中起什么作用?
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [AR Foundation] 人脸检测的流程
  • [Bada开发]初步入口函数介绍
  • [C++初阶]list的模拟实现
  • [Day 36] 區塊鏈與人工智能的聯動應用:理論、技術與實踐