LeetCode——remove n-th node from end of list

题目描述:

给定一个链表,删除链表的倒数第n个节点并返回链表的头指针
例如,
给出的链表为:1->2->3->4->5, n= 2.↵↵ 删除了链表的倒数第n个节点之后,链表变为1->2->3->5.
备注:
题目保证n一定是合法的
请尝试只用一步操作完成该功能

解题思路:

删除链表倒数第n个节点,关键是找到该节点且尽量使用较少的循环。
可以使用两个指针,一个指针先走n步,另一个指针才开始同步走,这样当快指针到达链表尾部的时候,慢指针也刚好指到要删除节点的上一个节点。

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @param n int整型 
     * @return ListNode类
     */
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        if(head==NULL)return head;
        ListNode* fast=head;
        ListNode* low=head;
        ListNode* tmp=NULL;
        for(int i=0;i<n;i++){
            fast=fast->next;
        }
        if(fast==NULL){   //考虑如果要删除的是头节点,可直接返回head->next.
            tmp=head->next;
            delete head;
            return tmp;
        }
        if(fast!=NULL){
            while(fast->next!=NULL){
                fast=fast->next;
                low=low->next;
            }
            //tmp=low->next;
            low->next=low->next->next;
            //delete tmp;
            return head;
        }
    }
};

【莫慌】

热门文章

暂无图片
编程学习 ·

springcloud config 配置访问

springcloud http请求地址和资源文件映射如下: / { 应用名 } / { 环境名 } [ / { 分支名 } ] / { 应用名 } - { 环境名 }.yml / { 应用名 } - { 环境名 }.properties / { 分支名 } / { 应用名 } - { 环境名 }.yml / { 分支名 } / { 应用名 } - { 环境名 }.properties label 分支…
暂无图片
编程学习 ·

吐血整理各种二叉树(BST、AVL、Red Black、B、B+)

前言 没有必要过度关注二叉树的增删改导致的结构改变,规则操作什么的了解一下就好,看不下去就跳过,本文过多的XX树操作图片纯粹是为了作为规则记录,该文章主要目的是增强下个人对各种常用XX树的设计及缘由的了解,也从中了解到常用的实现案例使用XX树实现的原因。 数据在计…
暂无图片
编程学习 ·

[云盘](二)我的文件和共享列表后台实现

后台代码实现我的文件列表Mian读取配置信息解析json登录token(cmd为count)解析jason(cmd不为count)获取用户文件个数获取用户文件列表源码共享文件列表main获取共享文件个数前端分页请求包获得普通共享文件列表共享文件排行榜源码 我的文件列表业务逻辑是,点击我的文件,会…
暂无图片
编程学习 ·

今天开始看apue了

第一个问题是安装apue.h 1 源码 2 安装libbsd-dev 3 解压后进入apue.3e目录下执行make 4 复制include下的apue.h和lib下的error.c到 /usr/include/中 5 在apue.h中加入#include “error.c” 应该就OK了!!!
暂无图片
编程学习 ·

quartus ii 使用modelsim altera进行仿真

第一种:先随便写一个程序,有输入,有时钟,有输出再点击processing-->start-->start test bench template writer然后就会在modlsim的文件中生成一个.vt的文件 然后打开这个文件接下来就是再initial和always里面添加信号保存,再点击首先看仿真软件是不是modelsin-altera,再…
暂无图片
编程学习 ·

extern随笔

extern的用法总结函数声明是可有可无的,因为函数不加修饰符默认是extern的; 全局变量在其他文件中使用时,extern关键词是必须的,如果变量在其他文件中没有extern且没有显示的初始化,则会被当成变量的定义。局部变量是不需要extern关键字描述的,而且局部变量在程序运行时才…
暂无图片
编程学习 ·

typescript学习笔记

typescript是微软开发的一个javascript的一个超集。支持es6规范。它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。es是客户端脚本的规范,es5,es6是这些规范的不同版本。JavaScript与typescript是两种客户端脚本语言,JavaScript实现了es5规范,t…
暂无图片
编程学习 ·

强推#vue图片预览组件—v-viewer

强推#vue图片预览组件—v-viewer 先来介绍一下背景 项目是用vue搭的,产品给的需求是:图片列表展示,要求点击图片可以放大。 原本就是写了一个弹出框,包裹相应图片就算完成了,但是!!! 作为一个善于思考的前端娃,我一定要考虑更加全面哇,因为这些图片是病人的病历拍照上…
暂无图片
编程学习 ·

【springboot高级】(二:自定义系统监听器,实现ApplicationListener接口。(使用篇))

springboot在系统启动的时候,提供了很多的监听,有时候我们需要根据一些业务,在启动的时候监听springboot启动的某个节点,然后做相应的事情,那么这节就来讲一下如何实现自定义监听器,在springboot发送事件的时候,我们能够监听到。 (注意:自定义监听器和自定义初始化器原…
暂无图片
编程学习 ·

vue项目里引用 gojs 流程图

要实现的需求 流程图,支持字体图标,颜色,可连接线,点击时右侧展示相关的详细信息 调研了多种可拖拽流程图的技术,如:bpmn.js,gojs等,由于bpmn-js功能冗余,GOJS相对于更加轻量级,最终选用GOJS开发此功能 gojs 文字区块 使用TextBlock类显示文本。 设置TextBlock.text属性…
暂无图片
编程学习 ·

安卓使用tf模型

安卓上使用tensorflow模型 使用pb模型: 【人脸识别】Google的Facenet移植到安卓 https://www.52pojie.cn/thread-758292-1-1.html 将TensorFlow训练好的模型迁移到Android APP上 https://blog.csdn.net/u012328159/article/details/81101074 https://github.com/cayden/facesa…
暂无图片
编程学习 ·

SDL环境搭建

一、SDL简单来说SDL就是封装了复杂的音视频底层操作,简化了音视频处理的难度。主要用于游戏开发和多媒体开发领域。而且SDL是C语言编写,可以跨平台使用。二、环境搭建SDL的环境搭建及其简单,直接在官网下载开发库就可以了;下载地址:http://www.libsdl.org/download-2.0.ph…
暂无图片
编程学习 ·

力扣简单题 169. 多数元素(摩尔投票法)

题目: 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [3,2,3] 输出: 3示例2: 输入: [2,2,1,1,1,2,2] 输出: 2做法分析: 对于2,2,1,3,1,…
暂无图片
编程学习 ·

xml解析之Jsoup器

Jsoup介绍百度百科:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。Jsoup使用导包代码例子新建一个xml文件。我放在src目录下<?xml version="1.0&quo…
暂无图片
编程学习 ·

树形结构菜单的增删改查

树形结构的样例约定:整个树形结构节点的层次最多能有3级。 数据库中表示树形结构pid表示父节点id,name为节点名称,url为节点的链接地址,icon为节点旁边的图标。 关联方式是通过pid字段关联到父节点的id字段,建立父子关系; 后台代码 实体类 /*** (TMenu)实体类** @author …
暂无图片
编程学习 ·

JS奇淫巧技

0. 向下取整最快方式 向下取整有很多方法, Math.floor, parseInt都可以, 不过两个非(~)运算符来取整是最方便的, 而且逻辑运算很快.还可以用~~再加1来向上取整.~~3.14 > 3 ~~Math.PI > 3 ~~Math.E > 2 ~~12.98 > 12var b= 2.33 | 0 ---b=2var c= 2.33 >> …