- 博客(5)
- 收藏
- 关注
原创 有效的括号
(LIFO,Last In First Out)的数据结构,非常适合用于处理括号匹配的问题。每当遇到一个左括号时,我们将对应的右括号入栈。当遇到一个右括号时,检查栈顶元素是否匹配。给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
2024-10-15 16:49:02
417
原创 KMP (Knuth-Morris-Pratt) 字符串匹配算法
getNext函数计算模式串的部分匹配表(next数组),这是 KMP 算法的核心。strStr函数利用 KMP 算法高效地在haystack中找到needle的第一个出现位置。KMP 算法的时间复杂度是O(m + n),其中m是haystack的长度,n是needle的长度,相比于暴力算法(时间复杂度 O(m * n)),KMP 更加高效。
2024-10-14 20:59:39
463
原创 理解链表中检测环并找到环起始节点的原理
初始化创建两个指针slow和fast,都指向链表的头节点head。检测环的存在慢指针(slow每次移动一步。快指针(fast每次移动两步。如果链表中存在环,slow和fast指针最终会在环内某个节点相遇。找到环的起始节点(当slow和fast相遇后):将slow指针重新指向链表的头部head。保持fast指针在相遇的位置。两个指针每次都移动一步,它们将在环的起始节点再次相遇。返回结果如果检测到环,返回环的起始节点。如果未检测到环,返回None。L。
2024-10-13 20:41:45
2069
原创 链表节点删除的实现方法
在处理链表节点删除问题时,选择合适的方法取决于具体的需求和场景。虚拟头节点 + 单指针方法因其简洁和高效,通常是首选。而递归方法则适用于链表长度适中的情况,代码更为直观。双指针法和不使用虚拟头节点的迭代方法则提供了不同的视角和实现方式,适用于特定的编程需求。理解并掌握这些不同的方法,不仅能提升您解决链表问题的能力,还能增强您对链表数据结构的整体理解。希望本文能为您在链表操作中提供有价值的参考和指导!
2024-10-12 20:11:27
1988
1
原创 开发商购买土地
然而,由于城市规划的限制,只允许将区域按横向或纵向划分成两个子区域,而且每个子区域都必须包含一个或多个区块。为了确保公平竞争,你需要找到一种分配方式,使得 A 公司和 B 公司各自的子区域内的土地总价值之差最小。在一个城市区域内,被划分成了n * m个连续的区块,每个区块都拥有不同的权值,代表着其土地价值。目前,有两家开发公司,A 公司和 B 公司,希望购买这个城市区域的土地。现在,需要将这个城市区域的所有区块分配给 A 公司和 B 公司。请输出一个整数,代表两个子区域内土地总价值之间的最小差距。
2024-10-12 19:12:41
1311
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅