由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一道题~
相关主题
问个题binary tree, sum of 2 nodes == given number
【什么时候需要做heap, 什么时候需要做BST】bloomberg和Google面经 发包子攒人品
请教一个题目来道难一点的题
counting sort an array of objects怎么做Longest Consecutive Sequence 问题释疑
算法题:min heap inplace变 BST求intersect的圆,求O(nlogn)的方法
请教一个问题amazon一面面经
G家电面题目find the median of an infinite data stream of integers
数组中找和为0的3个数,4个数请教一道题 median ii
相关话题的讨论汇总
话题: ct话题: cp话题: int话题: countarray话题: count
进入JobHunting版参与讨论
1 (共1页)
f*********d
发帖数: 140
1
考古到了一道老题~ 不会做~
给定一个数字数组,其中每个元素是从末端数小于原数组中该元素的个数。
求原数组。原数组中元素是从1到n。
Example:
原数组:4,1,3,2
Count array:3,0,1,0
z****e
发帖数: 54598
2
从后往前扫一遍
每次list.add(count[i],object[i])
P**l
发帖数: 3722
3
肯定得从前往后扫啊。
输入的最后一个数肯定是0吧

【在 z****e 的大作中提到】
: 从后往前扫一遍
: 每次list.add(count[i],object[i])

z****e
发帖数: 54598
4
that's exactly what i need
add(0,object) == add(object) where list.size()==0

【在 P**l 的大作中提到】
: 肯定得从前往后扫啊。
: 输入的最后一个数肯定是0吧

f*********d
发帖数: 140
5
恕我驽钝~ 没看懂~
能稍微详细一点吗?
count[i] 和 object[i] 都是什么啊?
输入只有count array

【在 z****e 的大作中提到】
: 从后往前扫一遍
: 每次list.add(count[i],object[i])

z****e
发帖数: 54598
6
count == count array
object == Integer array
and method:
List.add(int index, Object element)

【在 f*********d 的大作中提到】
: 恕我驽钝~ 没看懂~
: 能稍微详细一点吗?
: count[i] 和 object[i] 都是什么啊?
: 输入只有count array

p*****2
发帖数: 21240
7
复杂度什么要求呢?
z****e
发帖数: 54598
8
Integer == previous index number
index: 0,1,2 - for(int i=0;i...;i++)
count: 1,1,0 - input data
numb: 2,3,1 - what we want
list.add(0,2); - [2]
list.add(1,1); - [2,1]
list.add(1,0); - [2,0,1]
then
map {{2,1},{0,2},{1,3}}
sort by key and get the value
[0,1,2] -> [2,3,1]

【在 f*********d 的大作中提到】
: 恕我驽钝~ 没看懂~
: 能稍微详细一点吗?
: count[i] 和 object[i] 都是什么啊?
: 输入只有count array

f*********d
发帖数: 140
9
学习了,多谢大牛指教~

【在 z****e 的大作中提到】
: Integer == previous index number
: index: 0,1,2 - for(int i=0;i...;i++)
: count: 1,1,0 - input data
: numb: 2,3,1 - what we want
: list.add(0,2); - [2]
: list.add(1,1); - [2,1]
: list.add(1,0); - [2,0,1]
: then
: map {{2,1},{0,2},{1,3}}
: sort by key and get the value

p****g
发帖数: 355
10
米高蜥蜴的解法有点意思,我还以为只能从前面来。学习了。
设有list{1,2,3,4},Count array:3,0,1,0 代表了每个数在剩余list中的位置
位置3-〉4,剩余list{1,2,3}
位置0-〉1,剩余list{2,3}
位置1-〉3,剩余list{2}
位置0-〉2,剩余list{}
相关主题
请教一个问题binary tree, sum of 2 nodes == given number
G家电面题目bloomberg和Google面经 发包子攒人品
数组中找和为0的3个数,4个数来道难一点的题
进入JobHunting版参与讨论
r*********n
发帖数: 4553
11
贴一个代码。这个复杂度是O(N^2),原因是set::iterator是bidirectional,
所以下面这一行是linear time:
auto it = advance(num.begin(), A[i])
如果要得到O(NlogN),需要set提供 iterator select(int rank) 这个API,
auto it = num.select(A[i])
其实BST稍微改一下就可以实现select(可惜STL set没这个method),复杂度是O(logN
)。
vector original_arr(const vector& A){
vector ret;
if( A.empty() ) return ret;
ret.resize(A.size());
set num;
for(int i = 1; i <= A.size(); i++){
num.insert(i);
}
for(int i = 0; i < A.size(); i++){
auto it = advance(num.begin(), A[i]);
ret[i] = *it;
num.erase(it);
}
return ret;
}
h****p
发帖数: 87
12
这题没碰到过 不太好想啊
p*****2
发帖数: 21240
13

我觉得n^2不难想。不知道能不能再优化。

【在 h****p 的大作中提到】
: 这题没碰到过 不太好想啊
n**********e
发帖数: 45
14
simple python implementation:
F = []
for i in range(0,len(countArray)):
ct = countArray[i] + 1
F_cp = F[:]
F_cp.sort()
for j in F_cp:
if j <= ct:
ct = ct + 1
F.append(ct)
n**********e
发帖数: 45
15
n Log(n) improvement (pseudo codes):
F = []
F_cp = []
for i in range(0,len(countArray)):
ct = countArray[i] + 1
binary_find j so that F_cp[j] < ct #F_cp is always sorted
ct += (j+1)
while F_cp[j+1] == ct:
j += 1
ct += 1
F_cp.insert(ct) at j
F.append(ct)

【在 n**********e 的大作中提到】
: simple python implementation:
: F = []
: for i in range(0,len(countArray)):
: ct = countArray[i] + 1
: F_cp = F[:]
: F_cp.sort()
: for j in F_cp:
: if j <= ct:
: ct = ct + 1
: F.append(ct)

1 (共1页)
进入JobHunting版参与讨论
相关主题
请教一道题 median ii算法题:min heap inplace变 BST
求教一道面试题请教一个问题
再来一道简单的bit运算题G家电面题目
两个Amazon面试题数组中找和为0的3个数,4个数
问个题binary tree, sum of 2 nodes == given number
【什么时候需要做heap, 什么时候需要做BST】bloomberg和Google面经 发包子攒人品
请教一个题目来道难一点的题
counting sort an array of objects怎么做Longest Consecutive Sequence 问题释疑
相关话题的讨论汇总
话题: ct话题: cp话题: int话题: countarray话题: count