摘要:
简单模拟,最小的两个数字是a, b, 最大的数字时a + b + c #include<iostream> #include<cstdio> #include<algorithm> #include<set> using namespace std; int main() { multiset<in 阅读全文
摘要:
思路:动态规划 首先计算原数组的条件数组,及所有的元素都%2 f[i]表示从零到i中选,且以第i项为结尾的最长奇偶子数组。 class Solution { public: int longestAlternatingSubarray(vector<int>& nums, int threshold 阅读全文
摘要:
找规律的小题目 c ++ class Solution { public: int theMaximumAchievableX(int num, int t) { return num + t * 2; } }; 思路,动态规划。 f[i]表示,所有从0 - i - 1中跳到点 i 的方式的执行操作 阅读全文
摘要:
利用差分和动态规划进行求解。首先求出差分数组d[i],f[i]表示从0-i - 1中选,且包含d[i]所有交替子数组的最大长度。 条件中有s1 = s0 + 1 所以如果d[i] == 1 将 f[i]初始化为1 d[i - 1] == 1 && d[i] == -1 或者 d[i - 1] == 阅读全文
摘要:
方法1:利用桶的思想同时匹配所有words中的子串 (走路写法) 把所有首字母相同的子串放入到一个桶中,然后遍历s,对于首字母为s[i]的单词,若其大小为1则res ++, 否则删掉s[i],并根据s[i + 1]放入新的桶中。 c ++ class Solution { public: int n 阅读全文
摘要:
利用动态规划的思想,把每个格子上下左右连续的1的个数算出来,再从头到尾遍历一遍即可获得答案。 c ++ class Solution { public: int orderOfLargestPlusSign(int n, vector<vector<int>>& mines) { vector<ve 阅读全文
摘要:
我们根据position进行排序,然后倒序遍历。若后一辆车的时间比前一个少,前一辆车永远也追不上后一个,res ++ ;否则,前一辆车的时间等于后一个。 class Solution { struct Node { int p, s; double ti; bool operator < (cons 阅读全文
摘要:
首推桶思想,计数排序算法。 桶的本质实际上是一种分类,将全集分为子集,装入各个桶内。 我们将桶的分类标准按照年龄来分,cnt[i]表示年龄为i的人数 年龄为i的人可以向 (i - 0.5 * i + 7]~ i)的人发送好友请求,所以res += cnt[i - 0.8 * i + 7] + ... 阅读全文
摘要:
深度优先遍历判断二分图 c ++ class Solution { const static int N = 110, M = N * N; int h[N], e[M], ne[M], idx; int st[N]; void add(int a, int b) { e[idx] = b, ne[ 阅读全文
摘要:
首先c一手暴力法:利用树状数组,线段树,归并排序法查找逆序对,即全局倒置;在求出局部倒置,时间复杂度为nlogn 这里为了好写,采用树状数组方法进行逆序对求解 注:树状数组中下标不能有0,要对原数组进行+1修正 c ++ class Solution { int n; int tr[1000010] 阅读全文