算法
文章平均质量分 63
算法学习小记
zmm_mohua
这个作者很懒,什么都没留下…
展开
-
动态规划系列(一)
动态规划系列留个坑,慢慢补吧,太累了,太浪费时间了啊啊啊啊啊啊啊啊啊啊啊!!!动态规划无非分为以下几步:找到 ”状态“ 和 ”选择“ -> 明确dp数组/函数定义 -> 寻找”状态“之间的关系。1、动态规划设计:最长递增子序列...原创 2021-12-29 15:51:01 · 439 阅读 · 0 评论 -
动态规划系列(二)
动态规划系列(二)4、最长公共子序列最长公共子序列(Longest Common Subsequence, 简称 LCS)是一道非常经典的二维动态规划,也是一道非常经典的面试题目。最长公共子序列 问题就是让我们求两个字符串的 LCS 长度。比如输入 str1 = “abcde” , str2 = “aceb”, 算法应该输出3,因为 str1 和 str2 的最长公共子序列是 “ace", 它的长度是3。分析:第一步,一定要明确 dp 数组的含义对于两个字符串的动态规划问题,套路是通用的,一般都原创 2022-01-04 14:21:29 · 394 阅读 · 0 评论 -
动态规划系列(三)
动态规划系列(三)7、以最小插入次数构造回文串题目:输入一个字符串 s,可以在字符串的任意位置插入任意字符。如果要把 s 变成回文串,请计算最少要进行多少次插入?分析:dp 数组定义:对于字符串 s[i…j], 最少需要进行 dp[i][j] 次插入才能变成回文串。 base case 为:当 i == j 时,dp[i][j] = 0, 因为当 i == j 时 s[i…j] 就是一个字符,本身就是回文串,所以不需要进行任何插入操作。代码:#include <iostream>#i原创 2022-01-07 11:40:04 · 172 阅读 · 0 评论 -
动态规划(四)
动态规划(四)ps and os:漫漫动态规划路9、高楼扔鸡蛋原创 2022-01-10 11:09:36 · 309 阅读 · 0 评论 -
动态规划系列(五) -- 背包问题
动态规划系列(五)-- 背包问题1、0 - 1 背包问题题目:给你一个可装载重量为 W 的背包和 N 个物品,每个物品有重量和价值两个属性。其中第 i 个物品的重量为 wt[i],价值为val[i],现在让你用这个背包装物品,最多能装的价值是多少?分析:第一步:明确状态 和 选择。状态:背包的容量 和可选择的物品; 选择:装进背包 或 不装进背包。第二步:明确dp数组的定义第三步:根据选择,思考状态转移逻辑代码:#include <iostream>#include <v原创 2022-01-13 10:57:00 · 388 阅读 · 0 评论 -
动态规划系列(六)
动态规划系列(六)1、线性排列题目:街上有一排房屋,用一个包含非负整数的数组 nums 表示,每个元素 nums[i] 代表第 i 间房子中取钱,但是有一个约束条件,相邻的房子的钱不能被同时取出,你需要尽可能多地取出钱。请你写一个算法,计算在满足条件地前提下,最多能够去除多少钱?代码:#include <iostream>#include <vector>using namespace std;//解法一:自底向上int dp(vector<int> &原创 2022-01-14 12:26:49 · 234 阅读 · 0 评论 -
双指针技巧框架
双指针技巧框架双指针技巧分为两类,一类是”快、慢指针“,一类是”左、右指针“。前者主要解决链表中的问题,比如典型的判定链表中是否包含环;**后者主要解决数组(或者字符串)**中的问题,比如二分搜索。快、慢指针的常用算法快、慢指针一般会初始化指向链表的头节点 head,前进时快指针 fast 在前,慢指针 slow 在后。1、判定链表中是否有环分析:如果链表中不含环,那么这个指针最终会遇到空指针 null,表示链表到头了。否则就是链表含环。采用双指针,一个跑得快 fast,一个跑的慢 slow。如原创 2021-12-29 15:42:45 · 320 阅读 · 0 评论 -
二分搜索算法
二分搜索算法ps and os :又到了二分搜索算法,是他是他就是他,又双叒叕的是他,没办法呀!一个小小小技巧:在二分搜索里不要出现 else,而是把所有情况用 else if 写清楚,这样可以清晰的展现所有的细节。实例1、寻找一个数(基本的二分搜索)题目描述:搜索一个数,如果存在,则返回索引,否则返回-1。代码:int binarySearch(int[] nums,int target){ int left = 0, right = nums.length -1; while(left原创 2021-12-28 18:22:33 · 138 阅读 · 0 评论 -
滑动窗口学习小结
滑动窗口学习小结ps and os :刚开始会一头雾水,搞不懂为什么会这样,然后有这样的结果,因为我也是这样,但是 细心 且 耐心 的读下去,你会发现你仿佛打开了新世界!!!祝福!!!算法思路在字符串 s 中使用双指针中的左、右指针技巧,初始化 left = right = 0 ,把索引左闭右开区间 [left,right) 称为一个窗口。先不断地增加 right 指针扩大窗口 [left,right), 直到窗口中地字符串符合要求(包括了 T 中的所有字符)。(寻找可行解)此时,停止增加 r原创 2021-12-28 15:35:20 · 433 阅读 · 0 评论