dsadas

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*//**
解法一:通过set数据结构来做 时间复杂度O(m+n) 空间复杂度O(max(m,n))如果这个题再复杂一些,就需要用map数据结构*/
// public class Solution {//     public ListNode getIntersectionNode(ListNode headA, ListNode headB) {//         Set<ListNode> set = new HashSet<>();
//         ListNode tempAB = headA;
//         while(tempAB!=null){//             set.add(tempAB);
//             tempAB = tempAB.next;
//         }
//         tempAB = headB;
//         while(tempAB!=null){//             if(set.contains(tempAB)){//                 return tempAB;
//             }
//             tempAB = tempAB.next;
//         }
//         return null;
//     }
// }/**
解法二:双指针,分别 tempA,tempB,让他们分别遍历headA,headB,当走完各自的链表后,直接再走另一链路:即: tempA 走的 headA+headB temp 走的 headB+headA (具体可以看图的解析)时间复杂度: O(m+n) 空间复杂度O(1)*/
//  public class Solution {//     public ListNode getIntersectionNode(ListNode headA, ListNode headB) {//         ListNode tempA = headA;
//         ListNode tempB = headB;
//         while(tempA != tempB){ //如果不相交,则它们同时遍历完headA和headB,则返回的为null
//             tempA = tempA != null ? tempA.next : headB;
//             tempB = tempB != null ? tempB.next : headA;
//         }
//         return tempA;
//     }
// }/** 解法三:
暴力解决*/
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode tempA = headA;while(tempA != null){ ListNode tempB = headB;while(tempB != null){if(tempA == tempB){return tempA;}tempB = tempB.next;}tempA = tempA.next;}return tempA;}
}

/*** 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; }* }*//**迭代:
通过两个指针进行迭代:
我们可以申请两个指针,第一个指针叫 pre,最初是指向 null 的。
第二个指针 cur 指向 head,然后不断遍历 cur。
每次迭代到 cur,都将 cur 的 next 指向 pre,然后 pre 和 cur 前进一位。
都迭代完了(cur 变成 null 了),pre 就是最后一个节点了。*/
// class Solution {//  public ListNode reverseList(ListNode head) {//      //申请节点,pre和 cur,pre指向null
//      ListNode pre = null;
//      ListNode cur = head;//         ListNode tmp = null;
//      while(cur!=null) {//          //记录当前节点的下一个节点
//          tmp = cur.next;
//          //然后将当前节点指向pre
//          cur.next = pre;
//          //pre和cur节点都前进一位
//          pre = cur;
//          cur = tmp;
//      }
//      return pre;
//  }
// }/**递归
递归先写递归头,然后递归体:
一定要注意 head.next.next=head,head是当前的,(head.next是指向下一个节点).next=head是指回来,
也就链表换个防线,然后head.next = null是为了结束递归用*/
class Solution {public ListNode reverseList(ListNode head) {//递归终止条件是当前为空,或者下一个节点为空if(head==null || head.next==null) {return head;}//这里的cur就是最后一个节点ListNode cur = reverseList(head.next);//这里请配合动画演示理解//如果链表是 1->2->3->4->5,那么此时的cur就是5//而head是4,head的下一个是5,下下一个是空//所以head.next.next 就是5->4head.next.next = head;//防止链表循环,需要将head.next设置为空head.next = null;//每层递归函数都返回cur,也就是最后一个节点return cur;}
}

LeetCode 热题 HOT 100 -------160. 相交链表(链表)206. 反转链表(递归、回溯)相关推荐

  1. LeetCode 热题 HOT 100

    LeetCode 热题 HOT 100之JAVA解法 第1题 两数之和(简单) 代码 第2题 两数相加(中等) 代码 第3题 无重复字符的最长子串(中等) 代码 第4题 寻找两个正序数组的中位数(困难 ...

  2. 《LeetCode 热题 HOT 100》Java答案汇总版---持续更新中

    <LeetCode 热题 HOT 100>Java答案汇总版-持续更新中 个人认为<LeetCode 热题 HOT 100>中的题目特别适合算法新手进行一个入门的刷题,而且作者 ...

  3. LeetCode 热题 HOT 100 完整题解笔记知识点分类 C++代码实现

    1.知识点分布 填一下这个之前欠的天坑,复习一下算法入门的经典基础题. 除夕,正月初一,初二,一共写了三整天,除了吃饭就窝着补题. 每天30题+,整个人都写晕啦,终于写完啦() markdown生成 ...

  4. LeetCode 热题 HOT 100 第四十九天 152. 乘积最大子数组 中等题 用python3求解

    题目地址 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积. 测试用例的答案是一个32-位整数. 子数组 是数组的连续子序 ...

  5. LeetCode 热题 HOT 100【题型归类汇总,助力刷题】

    介绍 对于算法题,按题型类别刷题才会更有成效,因此我这里在网上搜索并参考了下 "

  6. LeetCode 热题 HOT 100 -------31. 下一个排列(数组,数学问题)128. 最长连续序列(数组) 11. 盛最多水的容器(数组) 621. 任务调度器 (数组)

    dsadas /**思路:找下一个排列,并且尽可能小,所以我们应该找一序列中从左边开始的"较小值"与"较大值"交换,但是为了尽可能小应该满足: 1." ...

  7. 两数相加c++_LeetCode 热题 HOT 100(01,两数相加)

    LeetCode 热题 HOT 100(01,两数相加) 不够优秀,发量尚多,千锤百炼,方可成佛. 算法的重要性不言而喻,无论你是研究者,还是最近比较火热的IT 打工人,都理应需要一定的算法能力,这也 ...

  8. Leetcode热题 二分法的主要应用(2)-夹逼准则

    持续刷题第13天 ! 今天我们继续刷Leetcode 热题 HOT 100,日复一日,相信自己,一定会有进步.如果一个人刷题太孤独了,欢迎加群每日一题算法群,让我们大家一起监督,一起成长. 此外我还建 ...

  9. LeetCode 热题100答案

    leetcode 热题100 文章目录 leetcode 热题100 [2. 两数相加](https://leetcode-cn.com/problems/add-two-numbers/) [3. ...

最新文章

  1. linux 使用spinlock的配对关系问题
  2. 【求推荐】优化SAP使用效率的RPA工具推荐
  3. 前端学习(1300)报错:无法加载文件 D:\nodejs\node_global\webpack.ps1,因为在此系统上禁止运行脚本...
  4. PHP单引号 ' ',没有任何意义,对所引内容不经任何处理直接拿过来
  5. 软件发布版本命名规则
  6. 拼装机器人感想_智能机器人心得体会
  7. 通过Shell脚本快速搭建高效Rsync服务
  8. COJ0700 数学(一)
  9. 城市定位html,城市定位页.html
  10. ftdi usb转串口驱动
  11. 博弈论——扩展式博弈(Extensive Game)
  12. Cisco路由器配置静态路由
  13. 管理学-“三个和尚”
  14. Google 黑板报: 哀悼与团结的曲线
  15. 作家天地杂志作家天地杂志社作家天地编辑部2022年第23期目录
  16. 【R实验.9】主成分和因子分析
  17. 区块链+人工智能,重新定义世界
  18. HTML 基础教程:HTML 编辑器
  19. border渐变 ios_iOS给视图添加渐变色
  20. 百度地图:创建多个标注点

热门文章

  1. 推荐两款好用的企业级内网穿透软件
  2. 18100出多少取整_电子表格里小数取整用什么公式?
  3. html的table 菜鸟,HTML table 标签 | 菜鸟教程
  4. Go 语言中的switch分支
  5. Win系统 - 系统双击文件总弹出属性窗口如何解决?
  6. 缓存加速-----Squid-访问控制列表日志分析反向代理
  7. 葫芦书笔记----循环神经网络(RNN)
  8. (区块链溯源)基于Hyperledger Fabric 区块链的危险化学品溯源
  9. java foreach循环语句_Javaforeach语句
  10. 排序算法——冒泡排序(Bubble Sort)