由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问题:数组找sum不小于key的元素个数最小的子数组
相关主题
做了一下 Google 的 Best Time to Buy and Sell Stock II问几道算法题
随便写写一些经验吧 3(完)数组中找和为0的3个数,4个数
这个是leet上的哪个题目?谢谢火帖里边的一道M的题Subarray sum
leetcode Palindrome Partitioning做了一点题,这段时间很浮躁
来道难一点的题总结一下我的经历,回报版上。
攒人品,回答问题请教个题目,求最长subarry, average < k
找连续最长子数组使得总和小于等于一定值G家onsite一题
谁有兴趣做道题?现在流行打电话据人么?只是电面
相关话题的讨论汇总
话题: int话题: nmax话题: sum话题: nsumpos话题: 数组
进入JobHunting版参与讨论
1 (共1页)
n****r
发帖数: 120
1
如题!
p*****2
发帖数: 21240
2
DFS就可以了吧?
Y**Y
发帖数: 66
3
子数组要求连续吧?
两个pointer (i, j),从左到右, sum = A[i] + ... A[j];
i=j = 0;
LOOP:
sum += A[j];
if (sum <= 0) {sum = 0; i=j=j+1;}
else if (sum >= target){
while (sum - A[i] >= target) {
sum -= A[i];
i++;
}
min_subarray = min(min_subarray, j-i+1);
}
j++

【在 n****r 的大作中提到】
: 如题!
c****m
发帖数: 179
4
楼上的没考虑key为负数的情况吧。应该判断sum是否比min(0, KEY)小?
x*********w
发帖数: 533
5

快排的partition

【在 n****r 的大作中提到】
: 如题!
p*****2
发帖数: 21240
6
最好有个例子。
n****r
发帖数: 120
7

搬板凳仔细听听,快排partition是啥套路?请详解!

【在 x*********w 的大作中提到】
:
: 快排的partition

x*********w
发帖数: 533
8
这个字数组因该不要求连续的
n****r
发帖数: 120
9
这道题是偶考古出来的F家面试题,没有原题,懊恼。
http://www.mitbbs.com/article_t0/JobHunting/32165741.html
题目:给一个数组和一个key,找出sum不小于key的数目最少的子数组
我开始说用一个priority queue,复杂度是O(n lg k),被提示可以用快速排序的
partition。
如果要求子数组连续的话YooY的two pointers思路应该可以,程序正确性我要再看看,
有负数的case处理应该是不行的。
等 xiaoxiaowww (笑笑)的解法!
x*********w
发帖数: 533
10
假设都是正数:
int GetMinSet(int a[], int n, int k)
{
if (k < 0)
{
int nMax = a[0];
for (int i = 1; i < n; i++)
nMax = max(a[i], nMax);
return nMax >= k ? 1 : 0;
}
//Get the positive part
int i = 0;
int j = n-1;
int nSumPos = 0;
while (i <= j)
{
if (a[i] < 0)
i++;
else if (a[j] >= 0)
{
nSumPos += a[j];
j--;
}
else swap(a[i], a[j]);
}
if (i >= n || nSumPos < k) return 0;
return _inner_min_set(a+i, n-i, k);
}
相关主题
攒人品,回答问题问几道算法题
找连续最长子数组使得总和小于等于一定值数组中找和为0的3个数,4个数
谁有兴趣做道题?火帖里边的一道M的题Subarray sum
进入JobHunting版参与讨论
p*****2
发帖数: 21240
11
确实是用partion来做
n****r
发帖数: 120
12
大侠们恕我愚钝,partition完了呢?剩下如何处理正整数部分呢?也就是_inner_min_
set(a+i, n-i, k)如何实现?
比如{5, 1, 4}, target = 8, 因为partition的话就是不要求子数组连续,这时候要排
序吗?
r**h
发帖数: 1288
13
搭车同问不sort的话有没有更好的方法

min_

【在 n****r 的大作中提到】
: 大侠们恕我愚钝,partition完了呢?剩下如何处理正整数部分呢?也就是_inner_min_
: set(a+i, n-i, k)如何实现?
: 比如{5, 1, 4}, target = 8, 因为partition的话就是不要求子数组连续,这时候要排
: 序吗?

h***i
发帖数: 1970
14
partition的时候可以顺便把两部分的sum算出来,如果后面的小于key,需要在前面再
找,否则就在后面找。

【在 r**h 的大作中提到】
: 搭车同问不sort的话有没有更好的方法
:
: min_

r**h
发帖数: 1288
15
对哦,这样就行了
谢谢啦

【在 h***i 的大作中提到】
: partition的时候可以顺便把两部分的sum算出来,如果后面的小于key,需要在前面再
: 找,否则就在后面找。

b*****u
发帖数: 648
16
快排的pivot怎么选?
x*********w
发帖数: 533
17

这个不是重点吧

【在 b*****u 的大作中提到】
: 快排的pivot怎么选?
b*****u
发帖数: 648
18
我在想怎么确保每次范围都会缩小,如果恰巧选了个极值所有数都落在一侧了呢?

【在 x*********w 的大作中提到】
:
: 这个不是重点吧

p*****2
发帖数: 21240
19

worst case N^2

【在 b*****u 的大作中提到】
: 我在想怎么确保每次范围都会缩小,如果恰巧选了个极值所有数都落在一侧了呢?
r**h
发帖数: 1288
20
范围内随机取一个数
见CLRS

【在 b*****u 的大作中提到】
: 我在想怎么确保每次范围都会缩小,如果恰巧选了个极值所有数都落在一侧了呢?
b*****u
发帖数: 648
21
对啊,所以并不一定比用heap的nlogn好

【在 p*****2 的大作中提到】
:
: worst case N^2

p*****2
发帖数: 21240
22

按照CC150的说法可以做到linear。但是算法会很复杂。让参见CLRS

【在 b*****u 的大作中提到】
: 对啊,所以并不一定比用heap的nlogn好
1 (共1页)
进入JobHunting版参与讨论
相关主题
现在流行打电话据人么?只是电面来道难一点的题
看看这2道题, 有没有什么捷径攒人品,回答问题
贡献一个最近电面题目找连续最长子数组使得总和小于等于一定值
问道微软面试DP题谁有兴趣做道题?
做了一下 Google 的 Best Time to Buy and Sell Stock II问几道算法题
随便写写一些经验吧 3(完)数组中找和为0的3个数,4个数
这个是leet上的哪个题目?谢谢火帖里边的一道M的题Subarray sum
leetcode Palindrome Partitioning做了一点题,这段时间很浮躁
相关话题的讨论汇总
话题: int话题: nmax话题: sum话题: nsumpos话题: 数组