19. 删除链表的倒数第N个节点
题目
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
分析
链表的题目基本上都是优先考虑双指针。一个指针先走N步,然后两个指针同步移动到链表末尾,移除前一个指针所指着的节点即可。但是越简单的题目越要考虑边界条件,不要掉坑里面,具体看代码吧,争取一次Bugfree.
Code
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode right = head; ListNode left = head; for (int i = 0; i < n; i++) { right = right.next; } if (right == null) { head = head.next; return head; } while (right.next != null) { left = left.next; right = right.next; } left.next = left.next.next; return head; } }
作者信息:
码蹄疾,毕业于哈尔滨工业大学。
小米广告第三代广告引擎的设计者、开发者;
关注推荐、搜索、广告领域相关知识;
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
非常简单的部署脚本(JavaWeb项目)和部署项目教程
这个部署方式,前提需要通过WinSCP工具将本地Maven项目打成zip包放到Linux对应的用户目录下,然后执行脚本便可以完成一键部署。 大家看到下面的脚本,可以发现一个显著的特点,部署脚本内容基本都是Linux命令拼接而来的。 所以这里还得强调一下,如果想把shell学好,Linux是基础。 这就好比Java,如果你想更深层次理解MyBatis或者Spring源码,对于Java基本工要求还是非常严格的,只有当Java基础扎实,所谓的框架对于你来说,其实也没什么。 deploy.sh #!/bin/bash demo_dir=/home/test/tomcat8/webapps web_dir=/home/test/tomcat8 cd $demo_dir rm -rf test-web.war rm -rf test-web echo "成功删除webapps下的项目,为下一次部署做准备" cd .. ./bin/shutdown.sh echo "关闭tomcat8服务器" cd /home/test/ if [ -f test-web*.zip ];then unzip tes...
- 下一篇
通过k-means进行图像量化压缩--python实现
image.png 逻辑梳理 对于电脑来说,每种颜色都会有一个对应RGB值,比如黑色是[0,0,0],白色是[255,255,255],所以RGB模式下,最多可以区分16581375(255的三次方)种颜色。 另外我们知道,一张图片的大小与分辨率正相关,但其实也与图片颜色的复杂度是正相关的,相同分辨率的情况下,一张纯色图片是比一张五彩斑斓的图片要小的。 一张分辨率为100*100的图片,其实就是由10000个RGB值组成。所以我们要做的就是对于这10000个RGB值聚类成K个簇,然后使用每个簇内的质心点来替换簇内所有的RGB值,这样在不改变分辨率的情况下使用的颜色减少了,图片大小也就会减小了。 内容 导入包 import matplotlib.pyplot as plt import seaborn as sns from sklearn.cluster import KMeans #导入kmeans from sklearn.utils import shuffle import numpy as np from skimage import io import warnings w...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器