由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Leetcode 689居然是fb的高频题?
相关主题
Maximum Sum of Increasing Sequence请问Binary Tree Maximum Path Sum这题到底是任意两个node的距离还是root到某点的距离?
关于Leetcode Maximum Subarray 的变种问题Binary Tree Maximum Path Sum非递归的怎么写
请教大家一道“Programming Pearls" 上面的题目Binary Tree Maximum Path Sum
问一道算法题largest subsequence sum <= maxLeetcode Combination Sum复杂度
lintcode subarray sum 怎么做?没看懂leetcode大牛关于一道概率题的答案
请大牛解释一下leetcode新题Leetcode Two Sum,我这个O(n)解法为啥不讨服务器的好呢
报个L家店面面经,求onsite blessleetcode题,有的看不了??
请教一下leetcode #321. Create Maximum Numberquestion about Leetcode #113 LeetCode – Path Sum II (Java)
相关话题的讨论汇总
话题: int话题: sums话题: len话题: res话题: best
进入JobHunting版参与讨论
1 (共1页)
s******b
发帖数: 185
1
Maximum Sum of 3 Non-Overlapping Subarrays。
看了半天,答案也看的不是很懂。
这道居然会是高频题?
u**u
发帖数: 668
2
可能因为思路简单吧
w*******o
发帖数: 113
3
叔这个题目是动态编程。
其实不是很复杂。
1. 就是你先算一下以k为长度,滑动窗口的和,放到一个数组里。
2. 从左到右计算 以i为起点,到i为止,最大值的窗口的起始index
比如说[1,3,2,0]
所对应[0,1,1] 因为 2 + 0 < 3 + 2
3.从右向左计算以z为为起点,从z向右考虑,最大窗口和的起始index
4.因为窗口不能重复,所以i + k <= j + k <= z
在j的范围内遍历并且更新结果就可以了。
代码如下:
class Solution {
public int[] maxSumOfThreeSubarrays(int[] nums, int k) {
int sum = 0, len = nums.length - k + 1;
int[] sums = new int[len];
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
if (i >= k) sum -= nums[i - k];
if (i >= k - 1) sums[i - k + 1] = sum;
}

int[] left = new int[len];
int best = 0;
for (int i = 0; i < len; i++) {
if (sums[i] > sums[best]) best = i;
left[i] = best;
}

int[] right = new int[len];
best = len - 1;
for (int i = len - 1; i >= 0; i--) {
if (sums[i] >= sums[best]) best = i;
right[i] = best;
}

int[] res = {0, k, 2 * k};
for (int j = k; j < len - k; j++) {
int i = left[j - k], z = right[j + k];
if (sums[i] + sums[j] + sums[z] > sums[res[0]] + sums[res[1]] +
sums[res[2]]) {
res[0] = i;
res[1] = j;
res[2] = z;
}
}
return res;
}
}
s******b
发帖数: 185
4
赞,太厉害了

【在 w*******o 的大作中提到】
: 叔这个题目是动态编程。
: 其实不是很复杂。
: 1. 就是你先算一下以k为长度,滑动窗口的和,放到一个数组里。
: 2. 从左到右计算 以i为起点,到i为止,最大值的窗口的起始index
: 比如说[1,3,2,0]
: 所对应[0,1,1] 因为 2 + 0 < 3 + 2
: 3.从右向左计算以z为为起点,从z向右考虑,最大窗口和的起始index
: 4.因为窗口不能重复,所以i + k <= j + k <= z
: 在j的范围内遍历并且更新结果就可以了。
: 代码如下:

y**********u
发帖数: 2839
5
加油啊叔,这是老题,不能15mins bug free很被动的

【在 s******b 的大作中提到】
: 赞,太厉害了
w*******o
发帖数: 113
6
哈哈,街霸哥。
我先改简历投简历,然后继续做题上poj

【在 y**********u 的大作中提到】
: 加油啊叔,这是老题,不能15mins bug free很被动的
y**********u
发帖数: 2839
7
好的,祝兄弟早日拿到大包,但是啥时候都别忘刷题,这样才能一直拿大包,才能被
pip时不用舔老板ass,才能活的有点尊严,切记切记

【在 w*******o 的大作中提到】
: 哈哈,街霸哥。
: 我先改简历投简历,然后继续做题上poj

x*******1
发帖数: 28835
8
大包裹的确思路快啊。
1 (共1页)
进入JobHunting版参与讨论
相关主题
question about Leetcode #113 LeetCode – Path Sum II (Java)lintcode subarray sum 怎么做?
LeetCode Medium被刷差不多了是不是可以面很多公司了?请大牛解释一下leetcode新题
Pairwise Sum 算法follow up报个L家店面面经,求onsite bless
Google电面请教一下leetcode #321. Create Maximum Number
Maximum Sum of Increasing Sequence请问Binary Tree Maximum Path Sum这题到底是任意两个node的距离还是root到某点的距离?
关于Leetcode Maximum Subarray 的变种问题Binary Tree Maximum Path Sum非递归的怎么写
请教大家一道“Programming Pearls" 上面的题目Binary Tree Maximum Path Sum
问一道算法题largest subsequence sum <= maxLeetcode Combination Sum复杂度
相关话题的讨论汇总
话题: int话题: sums话题: len话题: res话题: best