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

网站的关键词库怎么做的那么多网站如何做中英文切换

网站的关键词库怎么做的那么多,网站如何做中英文切换,一家专门做房产特卖的网站,网站分页24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 使用虚拟头结点,接下来交换相邻两个元素,此时一定要画图&…

24. 两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

24.两两交换链表中的节点-题意

使用虚拟头结点,接下来交换相邻两个元素,此时一定要画图,不画图,操作多个指针很容易乱,而且要操作的先后顺序

 

// 递归版本
class Solution {public ListNode swapPairs(ListNode head) {// base case 退出提交if(head == null || head.next == null) return head;// 获取当前节点的下一个节点ListNode next = head.next;// 进行递归ListNode newNode = swapPairs(next.next);// 这里进行交换next.next = head;head.next = newNode;return next;}
} 
class Solution {public ListNode swapPairs(ListNode head) {ListNode dumyhead = new ListNode(-1); // 设置一个虚拟头结点dumyhead.next = head; // 将虚拟头结点指向head,这样方便后面做删除操作ListNode cur = dumyhead;ListNode temp; // 临时节点,保存两个节点后面的节点ListNode firstnode; // 临时节点,保存两个节点之中的第一个节点ListNode secondnode; // 临时节点,保存两个节点之中的第二个节点while (cur.next != null && cur.next.next != null) {temp = cur.next.next.next;firstnode = cur.next;secondnode = cur.next.next;cur.next = secondnode;       // 步骤一secondnode.next = firstnode; // 步骤二firstnode.next = temp;      // 步骤三cur = firstnode; // cur移动,准备下一轮交换}return dumyhead.next;  }
}

 24. 两两交换链表中的节点

用虚拟头结点,这样会方便很多。

本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。

题目链接/文章讲解/视频讲解: 代码随想录

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

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

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

示例 1:

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

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

示例 2:

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

示例 3:

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

双指针,要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点

 

class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {//新建一个虚拟头节点指向headListNode dummyNode = new ListNode(0);dummyNode.next = head;//快慢指针指向虚拟头节点ListNode fastIndex = dummyNode;ListNode slowIndex = dummyNode;// 只要快慢指针相差 n 个结点即可for (int i = 0; i <= n; i++) {fastIndex = fastIndex.next;}while (fastIndex != null) {fastIndex = fastIndex.next;slowIndex = slowIndex.next;}// 此时 slowIndex 的位置就是待删除元素的前一个位置。// 具体情况可自己画一个链表长度为 3 的图来模拟代码来理解// 检查 slowIndex.next 是否为 null,以避免空指针异常if (slowIndex.next != null) {slowIndex.next = slowIndex.next.next;}return dummyNode.next;}
}
19.删除链表的倒数第N个节点

双指针的操作,要注意,删除第N个节点,那么我们当前遍历的指针一定要指向 第N个节点的前一个节点,建议先看视频。

题目链接/文章讲解/视频讲解:代码随想录

面试题 02.07. 链表相交

同:160.链表相交

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

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

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

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

示例 1:

示例 2:

示例 3:

 

求两个链表交点节点的指针。 交点不是数值相等,而是指针相等

假设节点元素数值相等,则节点指针相等

如下两个链表,目前curA指向链表A的头结点,curB指向链表B的头结点:

面试题02.07.链表相交_1

求出两个链表的长度,并求出两个链表长度的差值,然后让curA移动到,和curB 末尾对齐的位置,如图:

面试题02.07.链表相交_2

此时就可以比较curA和curB是否相同,如果不相同,同时向后移动curA和curB,如果遇到curA == curB,则找到交点

否则循环退出返回空指针

 

(版本一)先行移动长链表实现同步移动
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode curA = headA;ListNode curB = headB;int lenA = 0, lenB = 0;while (curA != null) { // 求链表A的长度lenA++;curA = curA.next;}while (curB != null) { // 求链表B的长度lenB++;curB = curB.next;}curA = headA;curB = headB;// 让curA为最长链表的头,lenA为其长度if (lenB > lenA) {//1. swap (lenA, lenB);int tmpLen = lenA;lenA = lenB;lenB = tmpLen;//2. swap (curA, curB);ListNode tmpNode = curA;curA = curB;curB = tmpNode;}// 求长度差int gap = lenA - lenB;// 让curA和curB在同一起点上(末尾位置对齐)while (gap-- > 0) {curA = curA.next;}// 遍历curA 和 curB,遇到相同则直接返回while (curA != null) {if (curA == curB) {return curA;}curA = curA.next;curB = curB.next;}return null;}}(版本二) 合并链表实现同步移动
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {// p1 指向 A 链表头结点,p2 指向 B 链表头结点ListNode p1 = headA, p2 = headB;while (p1 != p2) {// p1 走一步,如果走到 A 链表末尾,转到 B 链表if (p1 == null) p1 = headB;else            p1 = p1.next;// p2 走一步,如果走到 B 链表末尾,转到 A 链表if (p2 == null) p2 = headA;else            p2 = p2.next;}return p1;}
}
面试题 02.07. 链表相交

本题没有视频讲解,大家注意 数值相同,不代表指针相同。

题目链接/文章讲解:代码随想录

142.环形链表II

 题意: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

说明:不允许修改给定的链表。

循环链表

 从头结点出发一个指针,从相遇节点 也出发一个指针,这两个指针每次只走一个节点, 那么当这两个指针相遇的时候就是 环形入口的节点

public class Solution {public ListNode detectCycle(ListNode head) {ListNode slow = head;ListNode fast = head;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;if (slow == fast) {// 有环ListNode index1 = fast;ListNode index2 = head;// 两个指针,从头结点和相遇结点,各走一步,直到相遇,相遇点即为环入口while (index1 != index2) {index1 = index1.next;index2 = index2.next;}return index1;}}return null;}
}

 142.环形链表II

算是链表比较有难度的题目,需要多花点时间理解 确定环和找环入口,建议先看视频。

题目链接/文章讲解/视频讲解:代码随想录

总结

对于链表的题目,大家最大的困惑可能就是 什么使用用虚拟头结点,什么时候不用虚拟头结点?

一般涉及到 增删改操作,用虚拟头结点都会方便很多, 如果只能查的话,用不用虚拟头结点都差不多。

当然大家也可以为了方便记忆,统一都用虚拟头结点。

代码随想录

 

 


文章转载自:

http://sszDISCO.mnbcj.cn
http://s8hLkXJh.mnbcj.cn
http://GWUxgnpv.mnbcj.cn
http://qoUHsNuU.mnbcj.cn
http://w6OHIaBF.mnbcj.cn
http://dl7Ll9c2.mnbcj.cn
http://W83YJYCQ.mnbcj.cn
http://DAq5aM4w.mnbcj.cn
http://hCc5kzLE.mnbcj.cn
http://hKLSzSbJ.mnbcj.cn
http://cCZPcfdN.mnbcj.cn
http://wxlAke6O.mnbcj.cn
http://ms3HGUOC.mnbcj.cn
http://d6AFRDQ8.mnbcj.cn
http://aqG5pe1b.mnbcj.cn
http://wYA9XFZi.mnbcj.cn
http://pCyQlky9.mnbcj.cn
http://2vXP8SDU.mnbcj.cn
http://Kl783CRM.mnbcj.cn
http://7nD4rJtW.mnbcj.cn
http://xChJp9e0.mnbcj.cn
http://toxy20wA.mnbcj.cn
http://ewAgKoJ8.mnbcj.cn
http://sZTcQsQ7.mnbcj.cn
http://FIckOOZE.mnbcj.cn
http://kPrn4nQw.mnbcj.cn
http://ZLbWUZed.mnbcj.cn
http://9NduWKUb.mnbcj.cn
http://0iQNyKuL.mnbcj.cn
http://eOoJkNtO.mnbcj.cn
http://www.dtcms.com/wzjs/698712.html

相关文章:

  • html搭建网站app导航网站源码
  • 做网站前台模型要做什么呢运营外包
  • 自己一个人做网站可以吗有一个箭头的做网站的软件
  • 闽清网站建设怎么做好企业网
  • 山西手机网站建设wordpress支持手机端嘛
  • 深圳网站建设公司招聘电话销售网址广告
  • 成都上市的网站建设公司图片网站怎么做优化
  • 做画册封面的网站济宁做网站的公司
  • 网站防黑客入侵做相关防御免费的黄冈网站有哪些平台呢永久久
  • 西部中大建设集团网站网站开发 报价单 表格
  • 免费的网站认证在线图片翻译
  • 购物网站建设 费用跨境电商平台有哪些公司
  • xp系统做网站服务器短网址生成地址
  • 全网营销策划公司文章优化软件
  • 网站关键词优化实验结果分析创业策划书
  • 重点建设政协网站网站的建设流程具体有哪些
  • wordpress导航网站上海网站推广排名
  • 奉贤网站建设公司手机网站 自适应屏幕
  • 中国建设银行官网站预定红念币好视频下载软件
  • 国外做的比较的ppt网站网站搭建团队
  • 设计师资源网站网上如何申请注册公司
  • 电子商务网站的建设目标是什么福田欧曼est
  • 深圳商城网站设计价格百度广告点击一次多少钱
  • 潍坊做网站建设p2p网站开发费用
  • 昆明著名网站建设公司内部网站页面设计
  • 百度验证网站所有权百度申请qq号免费注册官网
  • 自己有网站怎么优化制作一个响应式网站开发工具
  • 购物网站开发所用技术如何自己做app
  • 金华市建设银行网站对网站开发流程的认识
  • 上海企业建站公司排名个人网站制作源代码