1191. K 次串联后最大子数组之和;2171. 拿出最少数目的魔法豆;1297. 子串的最大出现次数

1191. K 次串联后最大子数组之和

核心思想:贪心,如果k <= 2 那么只需要按照求最大子数组和来求即可,如果k>2了,那么如果子数组的和大于0就把它加在一起,如果不大于0就不要这部分。

1191. K 次串联后最大子数组之和;2171. 拿出最少数目的魔法豆;1297. 子串的最大出现次数_第1张图片

 2171. 拿出最少数目的魔法豆

核心思想:思路转换,拿出最少数目的魔法豆,意味着你剩余的魔法豆子最多,首先对豆子排个序,如果剩余豆子的数量为b,那么小于b的都要等于0,多余b的都要变成b,那么最后剩余(n-i)*b个豆子,你只需要找到剩余最多的豆子即可。

1191. K 次串联后最大子数组之和;2171. 拿出最少数目的魔法豆;1297. 子串的最大出现次数_第2张图片

 1297. 子串的最大出现次数

核心思想:枚举子串的起始点,统计出满足要求的子串放入哈希表中,最后返回出现次数最多的即可。优化,当一个字符串长度达到maxSize,那么它肯定包含长度minSize的子串,所以只需要统计minSize长度的字串即可。统计方法,枚举子串的左端点。

1191. K 次串联后最大子数组之和;2171. 拿出最少数目的魔法豆;1297. 子串的最大出现次数_第3张图片

 

你可能感兴趣的:(算法,数据结构,python)