由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - g 家面经
相关主题
A家面经这题就够凶残的了吧
电面题一个G家一道算法题
回报本版 V家面经问一道题
请教leetcode N-Queens II问题java的基本问题
matrix question问一下,这种洋灰三角形的解法是o(n)还是o(n2)
新鲜onsite面经算法:按照字典序求第k个排列数
拿到offer,分享之前的一些onsite面试amazon一道面试题
leetcode wordsearch的时间复杂度?Algorithms: permutaiont --Python code
相关话题的讨论汇总
话题: int话题: width话题: times话题: upsampling话题: input
进入JobHunting版参与讨论
1 (共1页)
h******e
发帖数: 52
1
you have an img data as an array, output the data for upsampling. For
example,
[1, 2, 3, 4, 5, 6] as width 3(2 rows) ==> upsample 2 times would be [1 1 2 2
3 3 1 1 2 2 3 3 4 4 5 5 6 6 4 4 5 5 6 6]
int[] UpSampling(int[] input, int width, int times)
{
//check the validation of input parameters
...

int numRows = input.Length / width;
int[] result = new int[input.Length * Math.Pow(times, 2)];
int index = 0;
for(int i = 0; i < numRows; i++)
{
for(int j = 0; j < times; j++)
{
for(int k = 0; k < width; k++)
{
for(int l = 0; l < times; l++)
{
result[index++] = input[i*width + k];
}
}
}
}
return result;
}
我这个算法用了4 个 loop, 看起来有点笨, 不过performance还是o(n). 和面试官讨
论,他没有反对,不过最后估计还是挂在了这个题上
大家有没有更好的办法?
t*********r
发帖数: 387
2
Possible solution:
Output[i] = f(i, width, times)
Determine what f is, and then write a single loop over the output array.
L*******k
发帖数: 42
3
这题充其量warmup吧不用这么复杂,按行写output不就行了

【在 t*********r 的大作中提到】
: Possible solution:
: Output[i] = f(i, width, times)
: Determine what f is, and then write a single loop over the output array.

e**y
发帖数: 784
4
估计也没有比O(n)更好的了吧
你自己背景是做imaging的?

2

【在 h******e 的大作中提到】
: you have an img data as an array, output the data for upsampling. For
: example,
: [1, 2, 3, 4, 5, 6] as width 3(2 rows) ==> upsample 2 times would be [1 1 2 2
: 3 3 1 1 2 2 3 3 4 4 5 5 6 6 4 4 5 5 6 6]
: int[] UpSampling(int[] input, int width, int times)
: {
: //check the validation of input parameters
: ...
:
: int numRows = input.Length / width;

M******i
发帖数: 468
5
这个不是行和列上来都定好的了,那就可以pre-allocate 空间, 直接loop所有的数字
列就好了
the idea is
int cols = width * times;
int rows = input.size()/width + (input.size() % width == 0 ) ? 0 : 1;
vector> ret(rows, vector(cols, 0));
for (int i=0; i < rows; ++i) {
for (int j=0; j < cols; ++j) {
ret[i][j] = input[i*width+j/times];
}
}
// do some boundary handling here
少两个loop,清晰点:)
c****z
发帖数: 42
6
一个for loop就可以啦
def upsampling(arr, width, times):
new_width = width*times
new_height = len(arr)/width*times
ans = [None]*new_width*new_height
for i in xrange(len(ans)):
row, col = i/new_width/times, i%new_width/times
ori_index = row*width + col
ans[i] = arr[ori_index]

return ans
1 (共1页)
进入JobHunting版参与讨论
相关主题
Algorithms: permutaiont --Python codematrix question
A家面经, offer, 请教Negotiation新鲜onsite面经
A家面经拿到offer,分享之前的一些onsite面试
P家面经leetcode wordsearch的时间复杂度?
A家面经这题就够凶残的了吧
电面题一个G家一道算法题
回报本版 V家面经问一道题
请教leetcode N-Queens II问题java的基本问题
相关话题的讨论汇总
话题: int话题: width话题: times话题: upsampling话题: input