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

b2c网站可分为国际军事新闻

b2c网站可分为,国际军事新闻,顺义网站建设,有个域名怎样做网站19. 删除链表的倒数第 N 个结点https://leetcode.cn/problems/remove-nth-node-from-end-of-list/ 1、题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出&#…

19. 删除链表的倒数第 N 个结点https://leetcode.cn/problems/remove-nth-node-from-end-of-list/

1、题目

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

示例 2:

输入:head = [1], n = 1
输出:[]

示例 3:

输入:head = [1,2], n = 1
输出:[1]

提示:

  • 链表中结点的数目为 sz
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

进阶:你能尝试使用一趟扫描实现吗?

2、题解

题解1:不使用头结点

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode cur = head;int size = 0;// 计算链表的长度while(cur != null) {size++;cur = cur.next;}int index = size - n;// 如果删除的是头节点,直接返回 head.nextif(index == 0) {return head.next;}cur = head;// 遍历到删除节点的前一个节点for(int i = 0; i < index - 1; i++) {cur = cur.next;}// 删除节点if(cur != null && cur.next != null) {cur.next = cur.next.next;}return head;}
}

题解2:使用头结点

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {// 创建一个虚拟头节点,方便处理删除头节点的情况ListNode dummyHead = new ListNode(0);dummyHead.next = head;// cur 用于遍历链表ListNode cur = dummyHead;int size = 0;// 计算链表的长度while(cur != null) {size++;cur = cur.next;}// 计算要删除节点的索引int index = size - n;// 重新将 cur 指向虚拟头节点,准备遍历到删除节点的前一个节点cur = dummyHead;// 遍历到删除节点的前一个节点for(int i = 0; i < index - 1; i++) {cur = cur.next;}// 删除节点,跳过要删除的节点cur.next = cur.next.next;// 返回修改后的链表,跳过虚拟头节点return dummyHead.next;}
}

题解3:使用头结点+快慢指针法

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {// 创建一个虚拟头节点,方便处理删除头节点的情况ListNode dummyNode = new ListNode(0);dummyNode.next = head;// 初始化快慢指针,均指向虚拟头节点ListNode fast = dummyNode;ListNode slow = dummyNode;// 快指针先移动 n+1 步,以便保持快慢指针之间的距离为 n+1n++;while(n > 0 && fast != null) {fast = fast.next; // 快指针向前移动n--; // 移动步数减少}// 快指针到达链表末尾时,慢指针正好指向待删除节点的前一个节点while(fast != null) {fast = fast.next; // 快指针继续向前移动slow = slow.next; // 慢指针也向前移动}// 删除目标节点,慢指针的下一个节点就是要删除的节点slow.next = slow.next.next;// 返回去除虚拟头节点后的链表return dummyNode.next;}
}

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

相关文章:

  • 成都医院做网站建设百度首页排名优化多少钱
  • 网站怎么做图片放映效果百度seo网站优化 网络服务
  • 做关于什么的网站5151app是交友软件么
  • 注册网站后邮箱收到邮件百度关键词点击价格查询
  • 深圳网站建房裤子seo关键词
  • 网页制作工作要求国内seo排名分析主要针对百度
  • 做摄影网站的目的是什么深圳seo排名
  • 源码做网站图文教程灰色词快速上排名
  • 网站建设需要哪些语言优化教程网
  • b2b行业网站建设搜索广告优化
  • 无形资产 网站建设餐饮店如何引流与推广
  • 国外做电商网站有哪些新冠疫情最新消息
  • 邢台地区网站建设独立线上推广策略
  • 做外贸网站咨询网站策划是干什么的
  • 个股期权系统网站开发营销策划方案
  • 深圳建设局网站宝安分中心深圳网站设计公司排行
  • 做任务挣钱的网站聚哈尔滨seo关键词优化
  • 电商网站建设技术可行性分析sem是什么岗位
  • 郑州建网站哪家好seo自动推广工具
  • 个人网站备案通过后什么软件比百度搜索好
  • 网站建设多少钱媒体平台
  • 如何用虚拟主机建设网站广告投放方式
  • 北京酒店团购网站建设seo是什么化学名称
  • 毕业设计网站模板下载专业海外网站推广
  • 网站建设一般报价多少论文收录网站有哪些
  • 德州乐陵德州seo公司关键词优化骗局
  • 网站建设工作策划方案如何在百度发布信息推广
  • 上海市工程建设交易中心网站公司企业网站建设方案
  • 延边手机网站建设开发小游戏推广接单平台
  • 深圳企业推广网站排名google官网入口