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

温州大型网站建设百度推广方式有哪些

温州大型网站建设,百度推广方式有哪些,学习网站的建设,电影网站做流量吗反转链表 II https://leetcode.cn/problems/reverse-linked-list-ii/description/ 描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 示例 1 输入&…

反转链表 II

  • https://leetcode.cn/problems/reverse-linked-list-ii/description/

描述

  • 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right
  • 请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表

示例 1

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

示例 2

输入:head = [5], left = 1, right = 1
输出:[5]

提示

  • 链表中节点数目为 n
  • 1 <= n <= 500
  • -500 <= Node.val <= 500
  • 1 <= left <= right <= n
  • 进阶: 你可以使用一趟扫描完成反转吗?

Typescript 版算法实现


1 ) 方案1: 穿针引线

/*** Definition for singly-linked list.* class ListNode {*     val: number*     next: ListNode | null*     constructor(val?: number, next?: ListNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.next = (next===undefined ? null : next)*     }* }*/const reverseLinkedList = (head: ListNode | null) => {let pre = null;let cur = head;while (cur) {const next = cur.next;cur.next = pre;pre = cur;cur = next;}
}function reverseBetween(head: ListNode | null, left: number, right: number): ListNode | null {// 因为头节点有可能发生变化,使用虚拟头节点可以避免复杂的分类讨论const dummyNode = new ListNode(-1);dummyNode.next = head;let pre = dummyNode;// 第 1 步:从虚拟头节点走 left - 1 步,来到 left 节点的前一个节点// 建议写在 for 循环里,语义清晰for (let i = 0; i < left - 1; i++) {pre = pre.next;}// 第 2 步:从 pre 再走 right - left + 1 步,来到 right 节点let rightNode = pre;for (let i = 0; i < right - left + 1; i++) {rightNode = rightNode.next;}// 第 3 步:切断出一个子链表(截取链表)let leftNode = pre.next;let curr = rightNode.next;// 注意:切断链接pre.next = null;rightNode.next = null;// 第 4 步:同第 206 题,反转链表的子区间reverseLinkedList(leftNode);// 第 5 步:接回到原来的链表中pre.next = rightNode;leftNode.next = curr;return dummyNode.next;
};

2 ) 方案2: 一次遍历「穿针引线」反转链表(头插法)

/*** Definition for singly-linked list.* class ListNode {*     val: number*     next: ListNode | null*     constructor(val?: number, next?: ListNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.next = (next===undefined ? null : next)*     }* }*/function reverseBetween(head: ListNode | null, left: number, right: number): ListNode | null {// 设置 dummyNode 是这一类问题的一般做法const dummy_node = new ListNode(-1);dummy_node.next = head;let pre = dummy_node;for (let i = 0; i < left - 1; ++i) {pre = pre.next;}let cur = pre.next;for (let i = 0; i < right - left; ++i) {const next = cur.next;cur.next = next.next;next.next = pre.next;pre.next = next;}return dummy_node.next;
};

3 )方案3:局部反转法

/*** Definition for singly-linked list.* class ListNode {*     val: number*     next: ListNode | null*     constructor(val?: number, next?: ListNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.next = (next===undefined ? null : next)*     }* }*/function reverseBetween(head: ListNode | null, left: number, right: number): ListNode | null {const dummy = {next: head}let tmp = dummyfor (let i = 0; i < left - 1; i++) {tmp = tmp.next}let prev = tmp.nextlet cur = prev.nextfor (let j = 0; j < right - left; j++) {let next = cur.nextcur.next = prevprev = curcur = next // cur = cur.next}tmp.next.next = curtmp.next = prevreturn dummy.next
};
http://www.mnyf.cn/news/47877.html

相关文章:

  • 如何自己做优惠卷网站百度中心
  • 专业做招聘的网站自助建站平台源码
  • 虚拟主机发布网站吗株洲seo
  • 网站备案中查询花西子网络营销策划方案
  • 公司牌子设计图微信小程序排名关键词优化
  • 唐山路南网站建设正规排名网站推广公司
  • 宁波网站制作 收费标准怎么样自己创建网站
  • 这么攻击网站百度收录排名查询
  • 做网站的会什么比百度好用的搜索引擎
  • 微信扫一扫抽红包在哪里做网站分销平台
  • 在线数据分析网站持啊传媒企业推广
  • 潍坊哪个网站建设公司好最新新闻热点事件2023
  • 宝鸡市做网站的公司有哪些网络销售技巧和话术
  • 深圳宝安做网站如何做网站推广的策略
  • 临沂网站建设电话智能识别图片
  • asp网站后台密码破解搜索广告是什么
  • 可以免费做网站吗百度竞价推广课程
  • 怎样做网站平台赚钱全网整合营销公司
  • 北京宏福建设有限公司网站软件定制开发公司
  • 导航栏网站建站关键词分析软件
  • 深圳网站建设公司有哪些内容自己搜20条优化措施
  • 直播网站可以做毕设吗云优化
  • 网站建设属于什么职能推广之家app
  • 用java做网站验证码怎么写免费建站软件
  • 小规模网站开发税率网上哪里接app推广单
  • 自己开一个网站怎么赚钱北京搜索引擎优化seo专员
  • 单色系网站设计有哪些企业官网建站
  • 天津西青区离哪个火车站近如何查询关键词的搜索量
  • 做电商与做网站的区别个人免费网上注册公司
  • 怎么开网站做网红西安seo优化公司