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

秋招突击——6/16——复习{整理昨天的面试资料}——新作{删除链表倒数第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;}
};

总结

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

相关文章:

  • 信用VS抵押:贷款的两面镜子
  • Linux(Centos7)OpenSSH漏洞修复,升级最新openssh-9.7p1
  • 英语恶补ing
  • MAP REDUCE
  • vue3的基本使用方法
  • “Jedis与Redis整合指南:实现高效的Java应用与Redis交互“
  • 示例:WPF中TreeView自定义TreeNode泛型绑定对象来实现级联勾选
  • 【PB案例学习笔记】-22制作一个语音朗读金额小应用
  • 持续学习的综述: 理论、方法与应用
  • ssldump一键分析网络流量(KALI工具系列二十二)
  • webClient + fastJSON2 获取json格式的数据,同时解析至java class 并 下划线转驼峰
  • 34.extern C的作用
  • 【读博日记】拓扑结构(待修正)
  • Standalone原理讲解与实操演示
  • 考研计算机网络(第一章 概述)
  • 【391天】每日项目总结系列128(2018.03.03)
  • C++11: atomic 头文件
  • C++类的相互关联
  • EOS是什么
  • ES6系列(二)变量的解构赋值
  • iOS编译提示和导航提示
  • Java知识点总结(JavaIO-打印流)
  • JSDuck 与 AngularJS 融合技巧
  • JS变量作用域
  • k8s如何管理Pod
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Node + FFmpeg 实现Canvas动画导出视频
  • orm2 中文文档 3.1 模型属性
  • vue 配置sass、scss全局变量
  • vue-router 实现分析
  • Vue实战(四)登录/注册页的实现
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • ------- 计算机网络基础
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 事件委托的小应用
  • 微信公众号开发小记——5.python微信红包
  • 学习JavaScript数据结构与算法 — 树
  • 一个JAVA程序员成长之路分享
  • 选择阿里云数据库HBase版十大理由
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ###C语言程序设计-----C语言学习(6)#
  • (2)Java 简介
  • (3)nginx 配置(nginx.conf)
  • (C++20) consteval立即函数
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (第27天)Oracle 数据泵转换分区表
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • ***检测工具之RKHunter AIDE
  • ./configure、make、make install 命令
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .Net 8.0 新的变化
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core WebAPI中封装Swagger配置