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

优秀网站设计平台建筑网上招工平台哪个好

优秀网站设计平台,建筑网上招工平台哪个好,校园网络方案设计,谁可以做网站优化排名推广第2天:链表算法 - 问题分析与Java实现 1. 问题分析 问题1:反转链表 问题描述 给定一个单链表的头节点 head,反转该链表并返回其头节点。 示例 Input: head [1,2,3,4,5] Output: [5,4,3,2,1]2. 解决方案(多种方法&#xff0…

第2天:链表算法 - 问题分析与Java实现

1. 问题分析

问题1:反转链表

问题描述

给定一个单链表的头节点 head,反转该链表并返回其头节点。

示例
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]

2. 解决方案(多种方法)

方法1:迭代法(O(n))

思路

  • 遍历链表,同时反转每个节点的指针。
  • 使用三个指针:prevcurrentnext 来跟踪节点并反转链表。
public ListNode reverseList(ListNode head) {ListNode prev = null;ListNode current = head;while (current != null) {ListNode next = current.next;current.next = prev;prev = current;current = next;}return prev; // 返回新的头节点
}

优点

  • 时间复杂度:O(n),n为链表的节点数量。
  • 空间复杂度:O(1),只使用了常量级别的额外空间。

方法2:递归法(O(n))

思路

  • 使用递归来反转剩余的链表,并在递归回溯时调整指针。
public ListNode reverseListRecursive(ListNode head) {if (head == null || head.next == null) {return head;}ListNode reversedList = reverseListRecursive(head.next);head.next.next = head;head.next = null;return reversedList;
}

优点

  • 时间复杂度:O(n),递归遍历链表的每个节点。
  • 空间复杂度:O(n),由于递归栈的使用。

问题2:判断链表是否有环(弗洛伊德快慢指针法)

问题描述

给定一个链表,判断它是否有环。

示例
Input: head = [3,2,0,-4], pos = 1
Output: true
解释:链表中存在环,尾节点连接到索引为1的节点。

2. 解决方案(多种方法)

方法1:弗洛伊德快慢指针法(O(n))

思路

  • 使用两个指针,一个慢指针(slow)和一个快指针(fast)。
  • 如果链表中有环,快指针会追上慢指针。
public boolean hasCycle(ListNode head) {if (head == null || head.next == null) {return false;}ListNode slow = head;ListNode fast = head;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;if (slow == fast) {return true;}}return false;
}

优点

  • 时间复杂度:O(n),快慢指针各自遍历链表一次。
  • 空间复杂度:O(1),没有额外空间的使用。

方法2:HashSet法(O(n))

思路

  • 使用一个HashSet来存储已访问过的节点。如果遇到重复的节点,就说明有环。
import java.util.HashSet;public boolean hasCycleHashSet(ListNode head) {HashSet<ListNode> visitedNodes = new HashSet<>();while (head != null) {if (visitedNodes.contains(head)) {return true;}visitedNodes.add(head);head = head.next;}return false;
}

优点

  • 时间复杂度:O(n),遍历链表一次。
  • 空间复杂度:O(n),由于存储了链表节点的集合。

问题3:合并两个有序链表

问题描述

将两个有序链表合并为一个新的有序链表,并返回合并后的链表。

示例
Input: l1 = [1,2,4], l2 = [1,3,4]
Output: [1,1,2,3,4,4]

2. 解决方案(多种方法)

方法1:迭代法(O(n))

思路

  • 同时遍历两个链表,比较每个节点的值,将较小的节点加入到新的链表中。
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode dummy = new ListNode(0);ListNode current = dummy;while (l1 != null && l2 != null) {if (l1.val < l2.val) {current.next = l1;l1 = l1.next;} else {current.next = l2;l2 = l2.next;}current = current.next;}if (l1 != null) {current.next = l1;} else {current.next = l2;}return dummy.next; // 返回合并后的链表
}

优点

  • 时间复杂度:O(n),n为两个链表节点的总数。
  • 空间复杂度:O(1),仅使用指针来遍历链表。

方法2:递归法(O(n))

思路

  • 使用递归的方式合并两个链表,每次比较两个链表的头节点。
public ListNode mergeTwoListsRecursive(ListNode l1, ListNode l2) {if (l1 == null) return l2;if (l2 == null) return l1;if (l1.val < l2.val) {l1.next = mergeTwoListsRecursive(l1.next, l2);return l1;} else {l2.next = mergeTwoListsRecursive(l1, l2.next);return l2;}
}

优点

  • 时间复杂度:O(n),递归遍历两个链表。
  • 空间复杂度:O(n),递归栈的空间开销。

总结

问题最优方法时间复杂度空间复杂度
反转链表迭代法O(n)O(1)
判断环弗洛伊德法O(n)O(1)
合并有序链表迭代法O(n)O(1)

🔥 掌握这些链表算法,提升你的面试能力,顺利应对大厂面试! 🚀

http://www.dtcms.com/a/602951.html

相关文章:

  • 2025-11-12 ZYZ28-NOIP-aoao round 2 hetao1733837的record
  • vite里带渐变的svg渲染失败
  • C语言编译器汉化安卓 | 提升开发效率,享受更流畅的编程体验
  • 双种群自适应差分进化算法 L-NTADE
  • 公司网站设计的公司兼职网站制作
  • 嵌入式Linux电源管理深度优化之系统休眠与唤醒机制实战解析
  • [QMT量化交易小白入门]-102、AI炒股项目如何迁移到a股市场全天候再平衡策略,5年历史回测中实现了62.15%
  • Python学习日记:从迷茫到灵光乍现
  • 【windows常见问题】无法以管理员身份运行
  • wordpress 音乐网站如何彻底清除网站的网页木马
  • try_lock_for 详细解析:如何使用及避免死锁
  • Elasticsearch 报错:index read-only / allow delete (api) 深度解析与解决方案
  • 敖汉旗住房和城乡建设局网站建站模板网站设计
  • 河北 石家庄 网站建设为什么建设网银网站打不开
  • 网站做任务哪些网站的网站怎么做的
  • MATLAB高阶谱分析工具箱(HOSA)解析
  • 公司网站制作需要找广告公司么中信建设有限责任公司湖南省人防建筑设计院
  • 郑州高端模板建站muiteer主题 wordpress
  • 网站策划书我与音乐wordpress评论模板怎么改
  • 网站头部代码江河建设集团有限公司网站
  • 东莞保安公司有哪些襄阳网站seo公司
  • 福田的网站建设公司windows7 wordpress
  • 专门提供做ppt小素材的网站pc端网站开发技术
  • 北京建站方案wap端是电脑还是手机
  • HLD3370AL HLD5070AL HLD9070AL HLD12070AL低压差线性稳压器70V高压防护聚能芯半导体智芯原厂技术支持
  • 111、sqlserver 表A有1亿条数据,表中每个不同值的字段B大约有100条数据,给B字段建索引和不建索引查询时性能相差多少倍?并进行分析
  • 官方网站建设专家磐石网络电子商务网站建设与维护课件
  • C++ 中的栈(Stack)数据结构与堆的区别与内存布局(Stack vs Heap)
  • 设计好网站苏州网站制作电话
  • 建材做网销哪个网站好怎么做企业网站