算法笔记和题解
文章平均质量分 83
写一些算法学习的笔记和一些算法题的题解
lucas_dd
本科在读,C++Linux方向学习者
展开
-
【Leetcode】857. 雇佣 K 名工人的最低成本
因为从k-1个开始向后遍历,一定可以使得前面k个工人得到薪资一定是大于最低期望薪资,因为是排升序,所以后面人的单个质量薪资是大于前面工人的,所以乘以工作质量所得到的工资一定是超过最低期望薪资的,所以就完美解决了满足条件2的问题。同时基准工资向后走,求出满足条件二的所有基准工资下的总的工资数,找到最小值。2️⃣可以对所有工人的单个质量的工资排升序,工资从下标为k-1的工人开始向后遍历,任意选择前面k个工人(包括本身)。大体方向有了,找基准工资,我们可以把所有人的基准工资求出来,再去一一找k个工人。原创 2022-09-11 17:43:35 · 291 阅读 · 3 评论 -
【Leetcode】152. 乘积最大子数组
请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。题意很好理解,找到乘积最大的非空连续子数组,需要注意的是连续,并且最大,还需要注意的是数组的数据范围是。这是一个动态规划的题目,状态表示比较常规,但是状态计算时有细节需要注意,总体来看这题还是不简单的。如果数组元素都是正数确实可以这样表示,但是存在负数和0的情况,所以这样写是不对的。考虑上负数和0的情况,状态方程也就需要发生改变,状态方程变成了。所以综上来就看,需要维护两个值,一个最大值,一个最小值。原创 2022-09-09 10:51:38 · 791 阅读 · 0 评论 -
【Leetcode】667. 优美的排列 II
在构建的过程中,可以发现构建出来的序列就是1到k + 1组成,但是最后一位并不确定,而后面加入的升序序列就是k + 2到n。现在知道的是后面序列的第一位是k+ 2, 但是前面序列的最后一位并不知道,他们两个的差值的绝对值会不会超过k呢?本题的题意还是比较容易理解的,我们需要构建一个这样的序列,保证所构成的序列中相邻元素的差的绝对值只有k种选择。,就可以保证序列中相邻元素的差值都是1到k。证明发现,前后两个序列的两个数值差是一定小于等于k的,所以这种构建方法是合理的。,请你构造一个答案列表。原创 2022-09-08 17:50:21 · 924 阅读 · 0 评论 -
【Leetcode】1592. 重新排列单词间的空格
可能难点在于不知道如何取出所有的单词,需要你了解stringstream的用法。如果不了解stringstream,可以看看这篇文章。,该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成,并且两个单词之间至少存在一个空格。这题的思路还是比较简单的,重新排列空格,使每个单词之间的空格数目相同且最大,请你重新排列空格,使每对相邻单词之间的空格数目都。如果不能重新平均分配所有空格,请。,这也意味着返回的字符串应当与原。本题大致可以分为三步来做。原创 2022-09-07 12:07:53 · 124 阅读 · 1 评论 -
【leetcode】828. 统计子串中的唯一字符
此时统计的字符子串是"A", 继续向后寻找下一个’A’,在寻找的过程中,会扫描到’B’, ‘C’,‘D’,可以与’A’构成"AB", “ABC”,“ABCD”,所以在向后寻找的过程中,上面的操作完成了一个字符的统计,一共可能存在26个字符,循环查找统计就可以求出所有子串的单个字符数量。例如走到’E’,新增加的包含第二个’A’的子串为"BCDAE",“CDAE”,“DAE”,“AE”。2️⃣继续寻找’A’,第二个’A’的下标为4,然后更新l,r。循环执行,向后走一步,新子串的数量就增加。原创 2022-09-06 23:04:17 · 222 阅读 · 0 评论