首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
力扣笔记
yyh888
创建于2024-09-01
订阅专栏
力扣刷题笔记
暂无订阅
共63篇文章
创建于2024-09-01
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
回溯但是先根遍历 leetcode 力扣 22 括号生成
这不就是先根遍历吗? 设left为当前结点左括号的数量,right为右括号的数量 处理叶子结点 如果当前结点left == right,将当前结点加入结果数组,并return。 向左递归 如果当前结点
leetcode 力扣 19 删除链表的倒数第N个结点
思路:快慢指针,同步移动。 我们的目标是找到倒数第n个结点的前一个结点。 1 -> 2 -> 3 -> 4 -> 5 假设要删除倒数第3个结点,如果快指针位于5号位置,那么慢指针是不是应该位于2号位,
leetcode 力扣 17 电话号码的字母组合
回溯 回溯要靠多做,多悟,画图也没用。下面就一步步来构建回溯(dfs)的框架 首先做好准备工作: 用数组代替哈希表提高效率,准备好各种数组,健壮性判断。。。 接着开始构建dfs 先写好递归出口,我们使
leetcode 力扣 15 三数之和
算法思路 三指针i, j, k,在每一轮遍历中,固定i,j和k向中间移动寻找和为0。 所以问题的关键是如何移动这三个指针,避免重复的数组。 对于i,j, k,我们需要与它们上一位已经遍历过的数比较 i
leetcode 力扣 240 搜索二维矩阵2
又是一道有点脑筋急转弯的意思 为什么不要从左上角和右下角开始搜索? 先来看一下右上角为什么可以: 对于行来说,从右往左递减,如果target 小于右上角,往左寻找 对于列来说,从上到下递增,如果tar
leetcode 力扣 238 除自身以外数组的乘积
动态规划 有点脑筋急转弯的味道了 要求[....3....]中除了3以外其他数的乘积,我们需要知道3左边所有数的乘积,以及3右边所有数的乘积,两者相乘即可。 我们可以使用两个数组 L[i]表示nums
leetcode 力扣 236 二叉树的最近公共祖先
先根遍历 算法思路 其实所有情况可以分为两类: 第一种情况:p和q中的一个,是另一个的根节点之一,比如下面第三张图中,5是4的根节点。或者第一张图中,7和它的子树无数层下的某个节点。 第二种情况:谁也
堆排序 leetcode 力扣 215 数组中的第k个最大元素
堆排序感觉要比快排好理解一点,但是有些边界条件还是要注意 比如,在建完大根堆后,需要依次删除堆顶元素。 i > nums.length - k:寻找倒数第k个元素,只需要删除k - 1次堆顶元素,然后
leetcode 力扣 221 最大正方形
动态规划 算法思路 看下图,如果一个以(i, j)为右下角,4 * 4的正方形可以成立,那么以(i, j - 1), (i - 1, j - 1), (i + 1, j)为右下角的,3 * 3的三个正
不同快速排序写法的边界条件有什么不同?
我试过用算法导论的写法做215数组中最大的第K个元素,但是最后一个用例死活过不去,所以以后的快排都用官方的写法。 忽略target
leetcode 力扣 215 数组中的第K个最大元素
魔改快速排序 首先来看两种写法 先来看官方的 接着是熟悉的快排传统写法 其中,官方的快排只需要4ms(使用了随机pivot),而传统的写法需要上千毫秒,而两者仅仅是while(i < j)中的写法不同
leetcode 力扣 208 前缀树Trie
我的建议是直接看图 非常巧妙的一道题,使用含26个树节点的数组保存字母,当然不是直接保存字母,而是将char转换为int,使用数组下标保存 在insert操作中,每次完整地输入一个单词后,都将末尾节点
如何判断有向图有没有环?leetcode 力扣 207 课程表
方法一 深度优先遍历 第一步,使用邻接表构建有向图 第二步,使用flags数组对图节点进行标记,0表示未遍历过该节点,1表示当前dfs已经遍历过该节点,-1表示过去的dfs已经遍历过该节点 第三步,构
leetcode 力扣 200 岛屿数量
深度优先遍历 算法思路 别想太多,只要是1就认为是岛屿,num_isLands++ 从grid[i][j] == 1开始dfs,把这个岛变成海,完了
leetcode 力扣 198 打家劫舍
又是抽象的dp 一开始误以为是跳着偷,隔一间偷一间,被自己蠢到了 动态转移方程为: dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1]) dp[i - 2]
leetcode 力扣 155 最小栈
单个栈实现 算法思路\ 在进行push操作时,如果val比min还小,则先插入min,再插入val 在进行pop操作时,如果栈顶元素是min,则同时删除上一代最小值,并更新min为上一代最小值
leetcode 力扣 152 乘积最大子数组
动态规划 算法思路 背就完事了。。。。。。。。。。。。。。。 res不能设置为1 res不能设置为0
leetcode 力扣 148 排序链表
归并排序 注意题目要求是O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序,所以只能对链表进行原地归并排序 算法思路 1、拆分。使用快慢指针,递归地把链表分成两半 2、合并。一边比较大小
leetcode 力扣 146 LRU缓存
纯编程能力的题,只有编程没有算法,考验是否够细心 哈希表的作用是O(1)时间内检查链表中是否存在某节点 感觉我在put操作比官解更严谨一点?
leetcode 力扣 142 环形链表2
数学题 由图可以看出,(n - 1)(y + z) 就是求fast和slow指针第一次相遇,因为他们相遇时,fast指针已经跑了(n - 1)圈 当fast和slow相遇后,z就等于x,可以把fast
下一页