![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客左神算法课记录
溯夜流云
这个作者很懒,什么都没留下…
展开
-
程序员面试指南(动态规划部分)3:最长递增子序列
class Solution { public: int lengthOfLIS(vector<int>& nums) { int length = 0; int size = nums.size(); if (size <= 1) return size; vector <int> d(size, 1); for (int i = 0; i < size; i++) for (int j = 0; j < i; ++j) ...原创 2021-03-10 16:29:54 · 90 阅读 · 0 评论 -
程序员面试指南(动态规划部分)3:换钱的方法数
思路1:简单暴力递归 思路2:对暴力递归的优化:即通过map等数据结构记录已经计算过一次的状态,后面再次计算只需要查表即可 思路3:动态规划原创 2021-03-10 16:01:32 · 96 阅读 · 0 评论 -
程序员面试指南(动态规划部分)2:矩阵的最小路径和
思路:经典动态规划,设置数组dp[i][j] 记录[i][j]位置的最短路径,由于只能向右或者向下走 所以dp[i][j]=min{dp[i-1][j],dp[i][j-1]}+m[i][j]; 时间复杂度O(N*M),空间复杂度为O(N*M) 空间复杂度可以考虑通过状态压缩,压缩到O(min(N,M)),即通过滚动数组来记录状态变换,但是这种压缩的方法不适合需要输出路径过程的场景。无法回溯过程。 ...原创 2021-03-10 15:41:47 · 179 阅读 · 0 评论 -
程序员面试指南(动态规划部分)1:斐波那契系列问题
普通思路: 1:根据动态规划的状态公式 , 时间复杂度O(N) 2:对以上算法中的动态规划公式,转换为矩阵相乘,利用矩阵乘法(矩阵快速幂) 时间复杂度O(logN) ...原创 2021-03-10 14:03:03 · 116 阅读 · 0 评论