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

自建网站怎么做二级页跳转百度seo免费推广教程

自建网站怎么做二级页跳转,百度seo免费推广教程,网络舆情监测工作方案,六安亿联网络科技有限公司对于单链表相关的问题,双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决: 合并两个有序链表: 使用两个指针分别指向两个链表的头部,逐一比较节点的值,将较小的节点链接到结果链表…

        对于单链表相关的问题,双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决:

  1. 合并两个有序链表: 使用两个指针分别指向两个链表的头部,逐一比较节点的值,将较小的节点链接到结果链表中,直至其中一个链表遍历完毕。

  2. 链表的分解: 使用快慢指针技巧,快指针每次移动两步,慢指针每次移动一步,直到快指针到达链表尾部。这样可以找到链表的中间节点,从而将链表分解成两部分。

  3. 合并 k 个有序链表: 可以利用归并排序的思想,两两合并链表,直到合并成一个链表。

  4. 寻找单链表的倒数第 k 个节点: 使用两个指针,让一个指针先移动 k 步,然后两个指针一起移动,直到第一个指针到达链表尾部,此时第二个指针指向的节点即为倒数第 k 个节点。

  5. 寻找单链表的中点: 同样使用快慢指针技巧,快指针每次移动两步,慢指针每次移动一步,直到快指针到达链表尾部,慢指针即为中点。

  6. 判断单链表是否包含环并找出环起点: 使用快慢指针技巧,如果存在环,快指针最终会追上慢指针。找到相遇点后,将其中一个指针移动到链表头部,然后两个指针以相同速度移动,再次相遇的节点即为环的起点。

  7. 判断两个单链表是否相交并找出交点: 分别遍历两个链表,得到它们的长度差,然后让长链表的指针先移动长度差步数,接着两个链表同时遍历,直到找到相同的节点为止。

总的来说,双指针技巧在解决单链表相关问题时非常实用,它能够高效地解决许多常见问题,包括合并、分解、寻找节点、判断是否存在环等等。而我们需要使用双指针解决的以上问题,则是先要学会以下问题的解题思路,一起看看。

一、相交链表

题目描述

        给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

图示两个链表在节点 c1 开始相交

题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构 。

自定义评测:

评测系统 的输入如下(你设计的程序 不适用 此输入):

  • intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0
  • listA - 第一个链表
  • listB - 第二个链表
  • skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数
  • skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数

评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视作正确答案 。

 

示例 1:

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at '8'
解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。
在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
— 请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。

 

示例 2:

输入:intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Intersected at '2'
解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [1,9,1,2,4],链表 B 为 [3,2,4]。
在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。

示例 3:

输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
输出:null
解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。
由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
这两个链表不相交,因此返回 null 。

 

提示:

  • listA 中节点数目为 m
  • listB 中节点数目为 n
  • 1 <= m, n <= 3 * 104
  • 1 <= Node.val <= 105
  • 0 <= skipA <= m
  • 0 <= skipB <= n
  • 如果 listA 和 listB 没有交点,intersectVal 为 0
  • 如果 listA 和 listB 有交点,intersectVal == listA[skipA] == listB[skipB]

解题思路及代码

   可以让tempA的最后指向headB,tempB的最后指向headA,这样两指针虽然不相等,但是两指针可以通过相同的速度移动相同的距离从而得到公共部分

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {//判断是否为空if(headA==null || headB==null){return null;}ListNode tempA=headA;ListNode tempB=headB;//可以让tempA的最后指向headB,tempB的最后指向headA,这样两指针虽然不相等,但是两指针可以通过相同的速度移动相同的距离从而得到公共部分while(tempA!=tempB){tempA=tempA.next;tempB=tempB.next;if(tempA==null && tempB==null)return null;if(tempA==null){tempA=headB;}if(tempB==null){tempB=headA;}}return tempA;}
}

结果展示

二、删除链表的倒数第k个节点

题目描述

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

解题思路及代码

        找第倒数n个节点。让快指针先走k步,然后使用慢指针从头开始,跟快指针按同样的速度行走,等快指针走到结尾,慢指针的节点就是倒是第k+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 temp=new ListNode(-1);temp.next=head;ListNode result=findNode(temp,n+1);删除倒数第k个节点result.next=result.next.next;return temp.next;}//找第倒数n个节点。让快指针先走k步,然后使用慢指针从头开始,跟快指针按同样的速度行走,等快指针走到结尾,慢指针的节点就是倒是第k+1个节点。public ListNode findNode(ListNode head,int n){ListNode slow=head,fast=head;for(int i=0;i<n;i++){fast=fast.next;}while(slow!=null && fast!=null){slow=slow.next;fast=fast.next;}return slow;}
}

结果展示

http://www.dinnco.com/news/53355.html

相关文章:

  • 游戏网站开发视频名词解释seo
  • 怎么制作网站的网页设计天津seo建站
  • 做网站不靠点击收费的数据分析培训机构哪家好
  • 小网站建设怎么建网站
  • 教育培训网站模板百度推广电话销售话术
  • php笔记网站网站搜索引擎优化报告
  • 易站通这个网站怎么做友链交易
  • 美国做空机构浑水网站微信小程序开发平台官网
  • 西部数码里面如何建设自己的网站做引流推广的平台
  • 网站如何安装dedecms超级seo助手
  • 怎么给网站添加代码网站seo关键词排名查询
  • 别墅效果图制作惠州seo网站推广
  • 客户在我这做的网站被罚品牌推广方案ppt
  • 自己搭建网站需要多少钱游戏推广赚佣金平台
  • 东丽手机网站建设刷排名的软件是什么
  • 无限元宝网页传奇首页关键词优化公司
  • 织梦网站内容自动更新企业推广方式有哪些
  • 网站建设制作汕头百度网盘在线登录入口
  • 做电商必须知道的网站百度seo推广
  • wordpress注册接口seo优化方案项目策划书
  • 代码编辑器做热点什么网站好友情链接还有用吗
  • 张家港网站设计有吗软件推广的渠道是哪里找的
  • 武夷山网站建设免费的自助建站
  • 网站建设依据搜索引擎营销特点
  • 深圳租赁住房和建设局网站民宿平台搜索量上涨
  • 网站开发用框架开发的优缺点seo免费教程
  • 淘宝优惠券网站怎么做的百度代运营公司
  • 南阳网站seo推广公司网站设计流程
  • 衡水网站建设广州百度
  • 做网站哪些我要下载百度