212.单词搜索 II 字典树 + DFS 使用字典树来存储要查找的单词,字典树的节点中记录单词的搜索路径。 DFS每层把字典树节点传入,就只用在当前节点检查相邻单元格是否在字典树节点的子节点中。 2021-11-09 算法 > leetcode
120.三角形最小路径和 动态规划+空间优化 状态转移方程: dp[i][j] = triangle[i][j] + min(dp[i-1][j], dp[i-1][j-1]) 应该记录一个二维数组dp,来维护每个位置的最小路径。但是由于是三角形结构,dp[i][j] 只跟 dp[i-1][j-1] 和 dp[i-1][j] 有关,使用一个一维数组来记录dp,倒序遍历,则计算i 行的 dp[j] 时,dp[j-1] 和 2021-09-30 算法 > leetcode
146.LRU缓存 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394type LRUCache struct 2021-09-30 算法 > leetcode
198.打家劫舍 动态规划 考虑当前房屋偷还是不偷。同时当前房屋的状态只与前一间房屋有关,所以可以用滚动数组进行空间优化。 时间复杂度:O(N)空间复杂度:O(1) 2021-09-30 算法 > leetcode
516.最大回文子序列 动态规划 dp[i][j] 用来记录从i到j位置的字符串的最大回文子序列长度。 dp[i][i] 都为1。 状态转移时考虑最左和最右元素是否相等,相等则转移至 dp[i+1][j-1] ,否则考虑 dp[i+1][j] 和 dp[i][j-1] 的较大者 。 注意遍历时,i从右边开始,可以保证每个子问题都计算过了。 时间复杂度:O(N^2)空间复杂度:O(N^2) 2021-09-30 算法 > leetcode
1011.D天内送达包裹的能力 leetcode 承载能力的范围:[最大包裹重量,包裹总重量] 承载能力范围中二分查找,找到让运输天数和需求天数相等的最小承载能力。运输天数小于需求天数时,承载能力可以再减小,反正则应该增大。 每天包裹重量大于承载能力时需等到第二天继续运输。 2021-09-20 算法 > leetcode
1091.二进制矩阵中的最短路径 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162func shortestPathBinaryMatrix(grid [][]int) int { n := len(grid) if grid[0][0] 2021-09-20 算法 > leetcode