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

品牌网站建设有哪些功能惠州百度seo地址

品牌网站建设有哪些功能,惠州百度seo地址,佛山新网站建设怎么样,网页制作软件三剑客💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 算法每日一练 (4)删除链表的倒数第 N 个节点题目描述解…

💢欢迎来到张胤尘的技术站
💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥

文章目录

  • 算法每日一练 (4)
    • 删除链表的倒数第 N 个节点
      • 题目描述
      • 解题思路
      • 解题代码
        • `c/c++`
        • `golang`
        • `lua`

官方站点: 力扣 Leetcode

算法每日一练 (4)

删除链表的倒数第 N 个节点

题目地址:删除链表的倒数第 N 个节点

题目描述

给你一个链表,删除链表的倒数第 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

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

解题思路

  • 首先处理边界条件,由题意可知被删除节点的次序值是小于或等于链表节点总数,并且大于等于1的,那么一定当整个链表只有一个节点时,被删除的节点次序值一定是1,故结果值一定是空(nilnullptr 或者 NULL)。
  • 另外由进阶要求得知仅仅使用一趟遍历完成题目,因为需要保证链表中节点的相对顺序,而且只能通过指针移动删除指定节点(因为只能一次遍历),因为数组(动态数组)本身根据链表的遍历后存储是有序的,而且可以通过下标直接操作链表节点,那么可以直接选择数组作为辅助。
  • 创建辅助数组(动态数组),同时也需要创建一个整形变量用于计算链表中的节点总数,后续可以直接通过总数值和待删除元素的次序值计算后得出待删除元素在数组(动态数组)的下标值。如下图所示:
    在这里插入图片描述
  • 通过临时指针变量 t 循环的将链表中的节点添加到数组(动态数组)中,并同时在循环中计算链表中节点总数。
  • 紧接着,只剩下两种情况需要判断:
    • 如果待删除的节点的次序值和节点的总数值相等,那么待删除节点就是头节点,直接将头节点指针 head 指向数组中第二个节点即可,不需要再进行下标计算。
    • 另外一种情况就是非头节点,那么需要根据上述公式计算出待删除节点在数组中的下标值后,将(下标值 - 1)的下个节点指向(下标值)的下个节点即可(进行指针移动删除中间元素)。
  • 最后返回 head 头指针即可。

解题代码

c/c++
#include <vector>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 n){if (!head->next)return nullptr;std::vector<ListNode *> vec;ListNode *t = head;while (t){vec.push_back(t);t = t->next;}int cnt = vec.size();if (n == cnt)head = vec[1];else{int target = cnt - n;vec[target - 1]->next = vec[target]->next;}return head;}
};
golang
type ListNode struct {Val  intNext *ListNode
}func removeNthFromEnd(head *ListNode, n int) *ListNode {if head.Next == nil {return nil}slice := make([]*ListNode, 0)t := headfor t != nil {slice = append(slice, t)t = t.Next}count := len(slice)if n == count {head = slice[1]} else {target := count - nslice[target-1].Next = slice[target].Next}return head
}
lua
local ListNode = {}function ListNode:new(val, next)local obj = {}setmetatable(obj, self)self.__index = selfobj.Val = val or 0obj.Next = next or nilreturn obj
endlocal function removeNthFromEnd(head, n)if head.Next == nil thenreturn nilendlocal arr = {}local t = headwhile t ~= nil dotable.insert(arr, t)t = t.Nextendlocal count = #arrif n == count thenhead = arr[2]elselocal target = count - n + 1arr[target - 1].Next = arr[target].Nextendreturn head
end

🌺🌺🌺撒花!

如果本文对你有帮助,就点关注或者留个👍
如果您有任何技术问题或者需要更多其他的内容,请随时向我提问。

在这里插入图片描述

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

相关文章:

  • o2o网站建设多少钱百度认证是什么
  • 龙里县建设局管方网站seo信息优化
  • 网站版块建设自己如何开网站
  • 车商城网站建设万网查询
  • 马尔康网站建设优化关键词排名提升
  • 如何建立一个永久网站色盲和色弱的区别
  • 公司网站的后台百度文库官网入口
  • 东莞凤岗网站建设电脑网络优化软件
  • html网站的规划与建设长沙网站外包公司
  • 网站空间怎么查询关键词优化如何做
  • 做网站的那些个人工作室免费发帖论坛大全
  • 石岩小学网站建设在线推广
  • 找加工厂上什么网站成都广告公司
  • 手机app下载安装到手机宁波网站推广优化公司怎么样
  • 做网站维护需要什么证书淘宝搜索关键词排名
  • 建设个公司网站需要多少费用百度指数官网查询入口
  • b2c的交易平台有哪些我赢seo
  • 江门模板建站源码广州头条新闻最新
  • 网站的数据库有什么用谷歌搜索引擎免费入口
  • 昆明网站建设首选互维网络整合营销公司
  • 网站自响应线上营销策划案例
  • 那些网站可以做反链淘宝产品关键词排名查询
  • 开网店怎么开的seo免费优化网站
  • 空调公司网站建设鹤壁seo推广
  • 临沂网站建设培训学校西地那非片吃了多久会硬起来
  • 广东建设部官方网站品牌seo主要做什么
  • 用JS做的购物网站seo推广优化的方法
  • 墙蛙网站谁家做的百度经验手机版官网
  • 简述网站规划的主要内容中国国家人事人才培训网证书查询
  • wordpress后台转中文廊坊首页霸屏排名优化