买卖股票的最佳时机 买卖股票的最佳时机 1、题目 图1 2、题解 动态规划 更新前\(i\)天的最低价格,即最低买入成本\(cost\) 更新前\(i\)天的最高利润\(profit\),即选择前\(i-1\)天最高利润\(profit\)和第\(i\)天卖出的最高利润\(price-cost\)中的最大值 1234567891011121314class Solution: 2024-04-14 Hot100 #实习
数组中的第k个最大元素 数组中的第k个最大元素 1、题目 图1 2、题解 堆排序 基本思想:堆排序(Heap Sort)是一种基于二叉堆数据结构的排序算法,它通过将元素构建成一个最大堆或最小堆,然后重复从堆中移除根节点,直到堆为空,从而得到有序数组。堆排序是一种原地排序算法,具有稳定的时间复杂度,通常效率较高。 12345678910111213141516171819202122232425d 2024-04-14 Hot100 #实习
最小栈 最小栈 1、题目 图1 2、题解 最小插值法 当元素入栈时,只要没有加入更小值时,当前最小值是保持不变的。我们可以改变入栈元素内容,将当前入栈值与最小值插值入栈,这样可以根据最小值还原栈内值。 这样有一个新问题:最小值不是一直不变,当有更小值入栈时,最小值就会改变,原来记录的差值就不对了。 当更小值入栈,插值小于0,而之前的插值都是大于等于0。因此可以根据负数插值作为一个 2024-04-14 Hot100 #实习
有效的括号 有效的括号 1、题目 图1 2、题解 辅助栈 遇到左括号入栈,遇到右括号时,对应栈顶左括号出战,则遍历完所有括号后,栈为空。 建立哈希表,构建左右括号对应关系。 边界问题: 当栈为空时,此时\(stack.pop()\)会报错,因此需要给stack赋予初值,并在哈希表中建立对应关系,予以配合。此时当stack为空,且字符串为右括号可以正常提前返回False。 2024-04-14 Hot100 #实习
搜索二维矩阵(二分法) 搜索二维矩阵 1、题目 图1 2、题解 两次二分查找 先二分查找找到小于target的是哪一行,并且下一行的第一个数大于target,然后在该行二分查找到target。 123456789101112131415161718192021222324252627282930class Solution: def searchMatrix(self, matrix: Li 2024-04-14 Hot100 #实习
搜索插入位置 搜索插入位置 1、题目 图1 2、题解 二分法 先确定查找区间的左右开闭情况 将区间定义左闭右开的好处:很多函数堆区间的操作都是左闭右开的形式;在返回值问题上,退出循环时,必然满足\(left==right\),这样在最后返回值上就可以任意返回。 数组长度 区间为左闭右开,数组长度就固定为\([0,len(nums))\)。 循环退出条件 由 2024-04-14 Hot100 #实习
RoPE——旋转式位置编码 旋转式位置编码(Rotary Position Embedding,RoPE) 实现思路 该技术的出发点是通过绝对位置编码方式实现相对位置编码,该方法在理论和实践上都有一定的道理。 假设通过下述运算给\(q,k\)添加绝对位置信息: \[ \tilde{\boldsymbol{q}}_m=\boldsymbol{f}(\boldsymbol{q},m),\quad\tilde{\bol 2024-04-13 LLM #大模型
子集 子集 1、题目 图1 2、题解 回溯法 设定一个tmp为子集,用来存放每次递归获得的数组,作为回溯的节点。遍历给定的数组,利用递归进行枚举和回溯。 123456789101112131415161718class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: res 2024-04-12 Hot100 #实习
全排列 全排列 1、题目 图1 2、题解 回溯法 可以将问题转换成在一行空格中填入给定的数,回溯法就是一种穷举的算法,从左到右依次填入数字。定义函数back(first,output),表示从左往右填到第first个位置的排列为output。 当first=n,表示已经填完n个位置,找到可行解,将output放入数组,递归结束 当first < n,需要考虑当前位置填 2024-04-11 Hot100 #实习
岛屿数量 岛屿数量 1、题目 图1 2、题解 广度优先搜索 通过扫描整个二维网络,如果某个位置为1,则将其加入队列,进行BFS。在BFS中,每搜索到一个1都会重新被标记为0.直到队列为空,搜索结束。最终岛屿数量为进行BFS的次数。 123456789101112131415161718192021222324class Solution: def numIslands(self 2024-04-09 Hot100 #实习