摘要:
牛老师挑选出n个小朋友参与跳舞节目,已知每个小朋友的身高$h_i$。为了让舞蹈看起来和谐,牛老师需要让跳舞的圆圈队形中相邻小朋友的身高差的最大值最小。 思路:对于 1 2 3 4 5 6,然后我们应该排成类似 6 4 2 1 3 5 这样可满足最大值最小,核心思想是田忌赛马,先放 6 5,然后 6 阅读全文
摘要:
求区间中的最小数*区间所有数的和的最大值 思路:单调递增栈,每次遇到一个比栈顶更小的元素,就需要让栈顶作为区间的最小值和ans比较(防止丢失),此时的区间还不能取到第i个位置 #include<bits/stdc++.h> using namespace std; const int mod=1e9 阅读全文
摘要:
字符串的 美丽值 定义为:出现频率最高字符与出现频率最低字符的出现次数之差。 比方说,"abaacc" 的美丽值为 3 - 1 = 2 。 给你一个字符串 s ,请你返回它所有子字符串的 美丽值 之和。 思路:无 const int N=505; class Solution { public: i 阅读全文
摘要:
小强暑假在烧饼铺打工,作为一名打工仔,他干活非常卖力。这不,店里举办了一个烧饼大赛,冠军是烧饼吃的最多的人! 老板将烧饼摆在一排的n个盘子上,其中第i个盘子中有Si个烧饼,但是对于一次吃烧饼操作, 参赛者每次选择1到n的某个整数x,将1,2......,x-1,x盘子中里的烧饼都吃掉一个, 当然,如 阅读全文
摘要:
A和B两个数组中的所有值都在[1,6]。每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成 1 到 6 之间 任意 的值(包含 1 和 6)。请返回使 A中所有数的和与 B 中所有数的和相等的最少操作次数。无解返回 -1 。 思路:约定sum(A)<sum(B),sA∈[n,6n],sA∈ 阅读全文
摘要:
从 word1 中选出某个 非空 子序列 subsequence1 。 从 word2 中选出某个 非空 子序列 subsequence2 。 连接两个子序列 subsequence1 + subsequence2 ,得到字符串。 返回可按上述方法构造的最长 回文串 的 长度 思路:f[i][j]表 阅读全文
摘要:
选择数组A开头或者末尾的整数x,获得B[i]*x分,并累加到S中。将x从A中移除。问能拿到的最大分数S。(len(A)<1e5, len(B)<1e3) 思路:len(A)很大,所以数组f的大小定位在len(B)中,且f表示的意义仅限于B f[l][r]表示从B中的左边拿了l个且在右边拿了r个时获得 阅读全文
摘要:
你是否可以从 nums 中选出 n 个 不相交 的子数组,使得第 i 个子数组与 groups[i] (下标从 0 开始)完全相同,且如果 i > 0 ,那么第 (i-1) 个子数组在 nums 中出现的位置在第 i 个子数组前面。(也就是说,这些子数组在 nums 中出现的顺序需要与 groups 阅读全文
摘要:
w是初始资金、选k个项目,一行项目的所需的启动资金,一行项目利益,问该如何选择做项目,能让你最终的收益最大? 思路:贪心选即可 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+5; 阅读全文
摘要:
用递归函数和栈逆序一个栈 实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。 思路:这里因为栈的输出本质也是将栈元素逆序,所以我得先将 st1 逆序为 st2,然后将 st2 用递归逆序... import java.util.*; import java.io.*; class S 阅读全文