摘要:
把一个数组分成m个连续子数组(不能有空数组),求所有分法中,子数组sum的最大值的最小值。 方法1:容易想到的是动态规划 dp[i][j] = min(max(dp[k-1][j-1], sum[k][i]) 1 <= k <= i, dp[i][j]表示用前i个数字,分成j组,最大和的最小值 ti 阅读全文
摘要:
分析:求一个区间最邻近的右边的区间在数组中的索引位置,右侧区间头要大于等于左侧区间尾。用map存区间头对应的区间索引。 标准库有map自己的lower_bound函数,返回大于等于key的第一个值的iteraotr。找右侧最邻近区间就是找 lower_bound(intervals[i][1]) . 阅读全文
摘要:
分析:暴力枚举复杂度为$O(n^4)$,不可行。将A,B能组成的和用map计数,查找 -C[i]-D[j] 在map中是否存在 time $O(n^2)$ space $O(n^2)$ class Solution { public: int fourSumCount(vector<int>& A, 阅读全文