由买买提看人间百态

topics

全部话题 - 话题: subset
首页 上页 1 2 3 4 5 6 7 8 9 10 (共10页)
f*********i
发帖数: 197
1
来自主题: JobHunting版 - 问一道题(6)
Given are a set of intervals S = {I1,I2.....In}, each interval have
different positive weight (weight is independent to the interval, there may
be the case that a long interval has a low weight but a short interval has
high weight).
Purpose: Find out a subset of S, say Sub, such that for every interval in S,
there is an interval I in Sub such that they are somehow overlap.
Requirement: the total weight of Sub is minimum.
就是说,找到一部分的interval,使得S内的所有interval和他们(中的某一个interval
)都有交集,并且要求最小的weight
希望大... 阅读全帖
g*********8
发帖数: 64
2
来自主题: JobHunting版 - 新鲜Amazon面经
赞举一反三
似乎in general是subset sum问题
c********d
发帖数: 173
3
来自主题: JobHunting版 - subset sum的问题
如果给定一个长度为2n的整数数组,要从中选出n个元素,使得它们的和和余下的n个元
素的和最接近
这个问题的算法是什么?谁能给出c++/java程序?
P***P
发帖数: 1387
4
来自主题: JobHunting版 - subset sum的问题
先求总和 = x, 然后找n个元素使其和约为x/2, 剩下的就是Knapsack problem了
当然这个肯定不是最优的
i*******6
发帖数: 107
5
来自主题: JobHunting版 - subset sum的问题
Greedy Algorithm:
排序,然后分两半,计算值差/2 = N
两个指针找绝对值最接近N的两个数,记录差t,要求t不大于上次查找的t
直到N=0或者没有这样的t存在
比如
11,5,4,7,4,2,9,3,10,1
先排序:
1,2,3,4,4,5,7,9,10,11
分成
1,2,3,4,4
5,7,9,10,11
计算差
N=28/2 = 14
第一次
找到11和1, 差t=10, N=N-t=4, 交换11和1
第二次
找到7和3, 差t=4<上次的10, N=N-t=0, 交换7和3
结束
结果
11,2,7,4,4
5,3,9,10,1
时间复杂度:
最坏情况O(n^2),如果能改进找差值的算法,可以做到nlogn
i*******6
发帖数: 107
6
来自主题: JobHunting版 - subset sum的问题
又想了下,找差值可以考虑这样搞
1,2,3,4,4
|
pointer1
5,7,9,10,11
|
pointer2
两个都指向当前最后一个数
这样如果两个差大于N,那么减pointer2,否则减pointer1.
交换过的就不再考虑了(因为排过序,可以保证每次都是最优解)
不过这样也是O(n^2)
再想想...
r*******n
发帖数: 266
7
来自主题: JobHunting版 - subset sum的问题
你看就是POMDP做多了..不是啥问题人家都认approximation的...
t*********7
发帖数: 255
8
来自主题: JobHunting版 - subset sum的问题
背包问题
g**********y
发帖数: 14569
9
来自主题: JobHunting版 - subset sum的问题
这个是对USACO的解答,你的问题改一下就行
private long solve(int N) {
if (N*(N+1)%4 != 0) {
return 0;
}

int M = N*(N+1)/4;

long[] dp = new long[M+1];
dp[0] = 1;

for (int i=1; i<=N; i++) {
for (int j=M-i; j>=0; j--) {
dp[j + i] += dp[j];
}
}

return dp[M]/2;
}
i**********e
发帖数: 1145
10
来自主题: JobHunting版 - subset sum的问题
可以说说思路吗?
h**********l
发帖数: 6342
11
来自主题: JobHunting版 - subset sum的问题
sort
然后取头n/2和尾n/2
g**********y
发帖数: 14569
12
来自主题: JobHunting版 - subset sum的问题
USACO的题是1~N的数字,换成int[] a也差不多。
就是把和/2, 就是目标值。然后用DP计算可以到达x的办法总数,存在dp[]里。
计算的时候,倒序计算,就不需要额外空间。
最后dp[sum/2]就是办法总数,因为对称性,所以除2.
P***P
发帖数: 1387
13
来自主题: JobHunting版 - subset sum的问题
同行啊, 握手握手...
s********r
发帖数: 277
14
来自主题: JobHunting版 - A facebook interview question
我怎么觉得这个事NP complete的, 可以转成set cover 问题。
把所有的人看成universal set,每一天都对应一个subset,对应这一天哪些人有空,
题目就是变成找最小的set cover问题。这个看起来是NP C问题。只能用approximation
algorithm
s********r
发帖数: 277
15
来自主题: JobHunting版 - A facebook interview question
我怎么觉得这个事NP complete的, 可以转成set cover 问题。
把所有的人看成universal set,每一天都对应一个subset,对应这一天哪些人有空,
题目就是变成找最小的set cover问题。这个看起来是NP C问题。只能用approximation
algorithm
k*****y
发帖数: 744
16
来自主题: JobHunting版 - Subset of size m Problem
you might need to do a swap after you pick i, and a swap back after the
recursive call.
H*****1
发帖数: 4815
17
来自主题: JobHunting版 - Subset of size m Problem

~~~~~~~~~~~~~~~~~~~~~~~~~~
这个循环不应该有
应该是对m[l]分支,加入或者不加入这个元素
p*i
发帖数: 411
18
来自主题: JobHunting版 - Subset of size m Problem
不对
[2, 3] 跟[3, 2]是一样的,注意是set/集合不是permutation
k*****y
发帖数: 744
19
来自主题: JobHunting版 - Subset of size m Problem
Thanks, good point. How about
========================================
def Subset_m(v,b,l,m,output):
if l==m:
print output
return
for i in range(b,len(v)-(m-(l+1))):
output[l]=v[i]
Subset_m(v,i+1,l+1,m,output)
========================================
Add a variable b to indicate where to start for the current selection.
l*****a
发帖数: 14598
20
来自主题: JobHunting版 - Subset of size m Problem
void GetSubset(T array[],size_t size,int start,size_t target,vector&vec)
{
if (vec.size()==target) {PRINT; return;}
if(start ==size) return;
for(int i=start;i {
vec.push_back(array[i]);
GetSubset(array,size,i+1,target,vec);
vec.pop_back();
}
return;
}
x*******5
发帖数: 152
21
来自主题: JobHunting版 - Subset of size m Problem
谢谢大牛指导,但是好像C++的还是不work
void Pearl::GetSubset(vector& array, int target,int start,vector&
vec){
if (vec.size()==target){

Pearl::Print(vec);
return;
}
if (start==array.size()) return;
for (int i=start;i vec.push_back(array[i]);
GetSubset(array,target,start+1,vec);
vec.pop_back();
}
return;
}
测试:
int a[]={1,2,3};
vector v(a,a+3);
vector vec;
Pearl::GetSubset(v,2,0,vec);
Outp... 阅读全帖
l****e
发帖数: 1718
22
来自主题: JobHunting版 - 半小时后电面BB,求bless
updates:
老印面试:
1.why bloomberg, why software engineering
2. two to find square root for doubles instead of int
3, maximum sum of a subset from a array, two cases: 1) continuous sequence 2
)not continuous
4. find a 6 digits: first 3 digits sum= last 3 digits sum
c*****o
发帖数: 1702
23
来自主题: JobHunting版 - 半小时后电面BB,求bless
maximum subset in an array有时间O(n)的解么?
z**x
发帖数: 16
24
来自主题: JobHunting版 - Another DP Problem: Balanced Partition
我的想法是:
1.设上限为 sum(1,n)/2
2.背包DP,求出子集A,such that for all possible subset A, ( sum(1,n)/2- A.sum
) is minimized
3.所以有A的补集B, ( B.sum-sum(1,n)/2)is minimized
4.所以对于这个partition, |A.sum - B.sum| is minimized
另外想请问背包问题的DP解法的前提是要保证物品的weight要不小于零吗(如本题的O
到K),另外这个上限K有没有实际的作用呢
c**********e
发帖数: 2007
25
来自主题: JobHunting版 - Another DP Problem: Balanced Partition
This is great. So the problem becomes to select a subset to minimize n*(n+1)
/2-A.sum.

sum
O
x*******5
发帖数: 152
26
来自主题: JobHunting版 - 问一道programming peals上的题
这个是我的题库,还有一些题没有coding,比如back of envelop计算,idea思考,等等
Column 4-5 Pearl (namespace Pearl)
64. Implement bitsort (Bitsort)
65 Find the k unique random integers from the range of [0,n-1] (STL, knuth,
swap, floyd) (generate_int_floyd; generate_int_swap; generate_int_knuth)
66. If memory is limited, using k-pass bitsort to sort integers (bitsort_
kpass)
67. Rotation of array (reverse, gcd, blockswap) (rotate; rotate2; rotate3)
68. Permutation of a string (without/with duplicates chars) (String::string_... 阅读全帖
w****x
发帖数: 2483
27
前天刚做过
//permutation of string with duplicate characters
//different from the subset problem, can't solve duplicated chars
//situation by sorting the array
void _inner_print(char strOrg[], char strCur[], int nLen)
{
assert(strOrg && strCur && nLen >= 0);
if (0 == nLen)
{
cout< return;
}
//record if a character is calculated as a header
//to eliminate duplicated characters
bool bRec[256];
memset(bRec, 0, sizeof(bRec));
for (int i = ... 阅读全帖
t*********7
发帖数: 255
28
来自主题: JobHunting版 - 说好得FG面经,回馈板上GGJJ
不是吧...要考虑每个子集和只出现一次啊,不是单纯的找出所有的SUBSETS啊
n********k
发帖数: 40
29
来自主题: JobHunting版 - 求一个array的算法题
这是最典型的NPC问题,lz可以狗一狗 subset sum problem 看看
j********e
发帖数: 1192
30
来自主题: JobHunting版 - 问个关于set的题
除了N,还有set的最大size (K)要考虑吧。
假如K是很小的常数,可以建一个大的Hashtable,把每个set的所有subset
(O(N*2^K)但是K是constant)都放进去,然后扫描一遍就知道了。

set。
w***y
发帖数: 6251
31
来自主题: JobHunting版 - 发我遇到的面试题FLG
我就不一一说是哪个公司的题目了:)
1. write a function to calculate the cube square root of x
2. given a set of elements, all possible subset
3. prefix search -- given a set of words, and a prefix, find the words
starting with the prefix
4. anagram bucket - anagram means different words with the same character
set, e.g., 'cat' and 'act' are anagram . Given a set of words, group them by
anagram.
=========================================
1. iterator with filter, 跟这个帖子的 2A一样
http://www.mitbbs.com/article_t/JobHunti... 阅读全帖
S*****e
发帖数: 229
32
two sigma
先是coding test,题目在glassdoor上有,虽然不难但是也得小心。他们家onsite时间
很长,4个人面一人一个半小时,有很多behavior问题,体力和耐心要好。只说技术题了
第一次onsite:
1. find cubic root of a number
2. 10个硬币,有一个硬币两面都是head,现在随机抽了一个硬币,投了一次发现是
head,问抽到的是坏硬币的概率
3. given a set, find all subsets
4. linear regression, integration of gaussian, max heap insertion and
deletion ….
5. how to design a web server that monitors the usage of backend servers and
display results
6. 记得有个同学说过的题,有两个矿A,B,有2n个工人,每个工人在A和B中挖矿的效
率不同,由两个数组给出。如果必须要有n个工人在A,n个工人在B里面,问如何使效率
最... 阅读全帖
S*****e
发帖数: 229
33
two sigma
先是coding test,题目在glassdoor上有,虽然不难但是也得小心。他们家onsite时间
很长,4个人面一人一个半小时,有很多behavior问题,体力和耐心要好。只说技术题了
第一次onsite:
1. find cubic root of a number
2. 10个硬币,有一个硬币两面都是head,现在随机抽了一个硬币,投了一次发现是
head,问抽到的是坏硬币的概率
3. given a set, find all subsets
4. linear regression, integration of gaussian, max heap insertion and
deletion ….
5. how to design a web server that monitors the usage of backend servers and
display results
6. 记得有个同学说过的题,有两个矿A,B,有2n个工人,每个工人在A和B中挖矿的效
率不同,由两个数组给出。如果必须要有n个工人在A,n个工人在B里面,问如何使效率
最... 阅读全帖
v****c
发帖数: 29
34
来自主题: JobHunting版 - 请教最优算法:最多装满水的桶?
他从subset sum做reduction
其实从3-partition problem reduce过来就可以了
即使整数是bounded,也是NPC
g***s
发帖数: 3811
35
来自主题: JobHunting版 - 请教最优算法:最多装满水的桶?
说的是有范围正整数,指的是所有数字的和S是有范围,我们找算法是S的多项式级就可
以了。
Subset sum在这个条件下有DP解。

★ 发自iPhone App: ChineseWeb - 中文网站浏览器
n*******w
发帖数: 687
36
来自主题: JobHunting版 - 请教两个算法题
第一题应该跟subset sum差不多,后者是NP-complete。http://en.wikipedia.org/wiki/Subset_sum_problem
如果有DP解法就不是NP了吧。
p*****2
发帖数: 21240
37
target is 7, candidate is 2,3,6,7
output should be 7 and 3+2+2 (but not print 2+3+2, 2+2+3)
不就是在一个数组里找subset,使得sum为target吗?
r*****e
发帖数: 264
38
来自主题: JobHunting版 - 明天要面烙印,求题目
我用C++常干的事情是minimum spanning trees, subsets sorting, max submatrices,
max cliques, graph traverse, linear transformation之类的,算法比较复杂(在
版上大牛看来可能不算什么吧),但是没有怎么用到OO的地方。感觉自己很落伍。
对了,博士还没读完,all but dissertation这样的可以么?
s****r
发帖数: 41
39
来自主题: JobHunting版 - 海量数据找中数似乎没啥好办法。
it will be be helpful if you know the nature of the data set. In many cases,
the median of a big data set is no much difference than the median of its
subset. In network traffic analysis, we have observed that the median
becomes stable fairly quickly, when we counted the sizes of transferred
objects on network. So usually, we need only compute the median for the data
objects in a small time window, and use it to represent the media for the
whole day, or other long time ranges.
g***s
发帖数: 3811
40
来自主题: JobHunting版 - 问一道微软的面试题-被难到了。
这个解法是指数级别的
DP很少会用subset作为状态。
s***h
发帖数: 662
41

他的nlogk 有点奇怪...不知道这个k是什么
define k to be |desired subset|,
use heap, then it is k * log n.
not sure what n * log k is...
h*****3
发帖数: 1391
42
来自主题: JobHunting版 - 请教leetcode Subsets II
我觉的你要把leetcode上所有的题都问一遍。
f*********m
发帖数: 726
43
来自主题: JobHunting版 - 请教leetcode Subsets II
没有搜到合适的答案,自己又不会做,能有什么别的办法呢?
a**********2
发帖数: 340
44
来自主题: JobHunting版 - 请教leetcode Subsets II
排序啊,相邻比较
f*********m
发帖数: 726
45
来自主题: JobHunting版 - 请教leetcode Subsets II
请问能show一下code吗?
非常感谢。
我写了一个,不过没有通过online judge.
void SubsetII(vector & I, int start, vector &A, vector
> &ret, int level) {
if(level == I.size()) {
ret.push_back(A);
return;
}
int i = start;
int prev = -1;
if (I[i] != prev) {
A.push_back(I[i]);
SubsetII(I, i + 1, A, ret, level + 1);
A.pop_back();
prev = I[i];
}
SubsetII(I, i + 1, A, ret, level + 1);
}
vector > subsetsWithDup(vector &S) {
vector > ret;
ve... 阅读全帖
j********2
发帖数: 82
46
来自主题: JobHunting版 - 请教leetcode Subsets II
有人给个正解吗?

int>
a*******y
发帖数: 1040
47
来自主题: JobHunting版 - 请教leetcode Subsets II
why dont you just check if(find(ret.begin(), ret.end(), A) == ret.end()) and
then add into the vector

int>
e***s
发帖数: 799
48
来自主题: JobHunting版 - 请教leetcode Subsets II
Bad performance

and
j********2
发帖数: 82
49
来自主题: JobHunting版 - 请教leetcode Subsets II
这个是不是还是先产生解再检查是否已经产生过?正解应该是不产生重复解吧(就像
permutation的问题一样)
R******1
发帖数: 58
50
来自主题: JobHunting版 - 请教leetcode Subsets II
对的 是在插入vector之前先检查是否产生过
开始是想不产生重复解的,但是程序是recursive的,混起来之后有点儿乱,就偷懒了
一下
有什么办法可以不用先生成再check的吗
首页 上页 1 2 3 4 5 6 7 8 9 10 (共10页)