LeetCode
文章平均质量分 51
敲 LeetCode 简记
有一个好名字
这个作者很懒,什么都没留下…
展开
-
力扣-比较版本号
可通过 Integer.parseInt() 方法将字符串快速转化为整数,例如 “001”可通过该方法变成整数1,具体代码如下。例如当版本号分别为 “1.001” 和 “1.01.1” 时,每次循环比较的结果为。可以先将两个版本号用 “.” 分割,然后将得到的字符串转化为整数再逐个比较即可。时间复杂度:O(max(n,m))空间复杂度:O(n+m)O。原创 2024-04-29 16:45:03 · 177 阅读 · 0 评论 -
力扣-分隔链表
定义两个新的空链表,一个保存小于 x 的节点,另一个保存大于等于 x 的节点。时间复杂度:O(n),其中 n 是原链表的长度。需要遍历原链表一次。空间复杂度:O(1)。只需要创建了常数个额外节点。本来想直接在链表上进行修改,但是发现太乱。原创 2024-04-19 11:07:36 · 183 阅读 · 0 评论 -
力扣-删除排序链表中的重复元素II
因为题目中链表是已排序的且重复的节点是挨着的,因此通过一次遍历就可解决改题。同时注意到重复节点可能出现在表头,因此可以在表头新加一个虚拟节点(这是一个处理链表问题时较常用的方法)。平均情况下,节点值不相同的情况更多,但即使如此,也需要遍历整个链表来确保删除所有重复节点。最坏情况下,链表中所有节点都相同,此时需要遍历整个链表一次来删除所有重复节点。这段代码使用了常数个额外的变量(dummy、cur、val),与链表长度无关。因此,时间复杂度为O(n),其中n是链表的长度。因此,空间复杂度为O(1)。原创 2024-04-12 20:21:59 · 261 阅读 · 0 评论 -
力扣-单词搜索
例如 board = board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCB”这道题是一个很经典的回溯问题,对于一个二维数组,从第一个字符开始进行深度优先遍历,即从上下左右四个方向进行查找是否存在字符串 word。因为在进行深度优先遍历时是从 上下左右 四个方向进行的,对于已经访问过的地方是不需要重复访问的,否则会出错。与 **board[i][j] = word[index];是为了避免重复访问。原创 2024-04-09 11:21:57 · 333 阅读 · 0 评论 -
力扣-搜索二维矩阵
这道题和在一维数组中查找目标值很像,不过这里的数组变成了二维数组。在解这道题之前先讲一下怎么在升序一维数组里面用二分查找法找不大于某个目标值(target)的最大索引。例如在数组nums = {1, 3, 5, 7, 9}里面要查找目标值 target = 6,应返回的索引为 2。原创 2024-04-07 10:24:05 · 468 阅读 · 0 评论 -
力扣-简化路径
空间复杂度:O(n),其中 n 是字符串的长度。空间复杂度主要取决于字符串的分割和栈的使用。分割字符串需要 O(n) 的空间,栈的最大空间大小为 O(n)。因此空间复杂度为 O(n)。时间复杂度:O(n),其中 n 是字符串的长度。需要遍历字符串的每个字符,对于每个字符,入栈和出栈操作的时间复杂度为 O(1),因此总的时间复杂度为 O(n)。这个题和逆波兰表达式求值很想,都是通过使用栈来实现。这里列出 java 代码。原创 2024-04-05 23:17:50 · 331 阅读 · 0 评论