由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - AMAZON PHONE SCREEN 1 基本死掉。
相关主题
问个面试题一道面试题
顺时针打印MxN矩阵的简洁递归解法O(N) sort integer array
电面题一个书上关于search和sorting的部分 应该不用全看吧?
sodoku solver 怎么做?F家电面:group Anagrams
MS intern 电面被拒,附上面试过程螺旋打印matrix
微软onsite求顺时针打印矩阵code
matrix question一道G题
考古到一道题Leetcode Surrounded Regions Large Case Runtime Error
相关话题的讨论汇总
话题: int话题: matrix话题: visited话题: startrow
进入JobHunting版参与讨论
1 (共1页)
e***s
发帖数: 799
1
没求BLESS是不是就比较悲剧呢?
1.说一下Hash function的技术要点
2.说一下Hashtable
3.100 Million 个 10 bit integer,怎么sort快?
4.螺旋打印2维数组
e.c. 1,2,3
4,5,6
7,8,9
output: 1,2,3,6,9,8,7,4,5
y*****n
发帖数: 243
2
pat pat, 第2轮可以补救的。
加油
s******n
发帖数: 3946
3
螺旋打印有点意思
s******n
发帖数: 3946
4
估计做得不错,能答4道题,弱的两题就没时间了

【在 y*****n 的大作中提到】
: pat pat, 第2轮可以补救的。
: 加油

A**u
发帖数: 2458
5
AMZ太无聊了,
每人都问hash table

【在 e***s 的大作中提到】
: 没求BLESS是不是就比较悲剧呢?
: 1.说一下Hash function的技术要点
: 2.说一下Hashtable
: 3.100 Million 个 10 bit integer,怎么sort快?
: 4.螺旋打印2维数组
: e.c. 1,2,3
: 4,5,6
: 7,8,9
: output: 1,2,3,6,9,8,7,4,5

A**u
发帖数: 2458
6
只有螺旋打印要写代码吧
其它的瞎blabla,说说思路

【在 s******n 的大作中提到】
: 估计做得不错,能答4道题,弱的两题就没时间了
s******n
发帖数: 3946
7
还挺复杂,你来写一个吧。

【在 A**u 的大作中提到】
: 只有螺旋打印要写代码吧
: 其它的瞎blabla,说说思路

s******n
发帖数: 3946
8
螺旋打印:
int array[N][N];
for (int i=0; i for (int j=i; j for (int j=i; j for (int j=N-i-1; j>0; --j) cout< for (int j=N-i-1; j>0; --j) cout< }
f**********2
发帖数: 2401
9
求问第3题怎么回答最好?是不是用bucket sort?
y*****n
发帖数: 243
10
没有说是N*N的吧。而且如果N是奇数的话是不是中间那个数打不出来? 每个角落的数
是不是会打2次?

【在 s******n 的大作中提到】
: 螺旋打印:
: int array[N][N];
: for (int i=0; i: for (int j=i; j: for (int j=i; j: for (int j=N-i-1; j>0; --j) cout<: for (int j=N-i-1; j>0; --j) cout<: }

相关主题
微软onsite一道面试题
matrix questionO(N) sort integer array
考古到一道题书上关于search和sorting的部分 应该不用全看吧?
进入JobHunting版参与讨论
y*****n
发帖数: 243
11
public static void printMatrixCircle(int[][] matrix) {
// there is more row here
int startRow = 0;
int startColumn = 0;
int endRow = matrix.length - 1;
int endColumn = matrix[0].length - 1;
while (startRow <= endRow && startColumn <= endColumn) {
helpPrintMatrixCircle(matrix, startRow, startColumn, endRow, endColumn);
startRow++;
endRow--;
startColumn++;
endColumn--;
}
}
public static void helpPrintMatrixCircle(int[][] matrix, int startRow,
int startColumn,
int endRow, int endColumn) {
// special case only one row
if (startRow == endRow) {
for (int i = startColumn; i <= endColumn; i++) {
System.out.print(matrix[startRow][i] + " ");
}
return;
}
// special case only one column
if (startColumn == endColumn) {
for (int i = startRow; i <= endRow; i++) {
System.out.print(matrix[i][startColumn] + " ");
}
return;
}
// print first row
for (int i = startColumn; i <= endColumn; i++) {
System.out.println(matrix[startRow][i]);
}
// print column at right side
for (int i = startRow + 1; i <= endRow; i++) {
System.out.println(matrix[i][endColumn] + " ");
}
// print second row
for (int i = endColumn - 1; i >= startColumn; i--) {
System.out.println(matrix[endRow][i] + " ");
}
// print column at left
for (int i = endRow - 1; i >= startRow + 1; i--) {
System.out.println(matrix[i][startColumn] + " ");
}
}
C***U
发帖数: 2406
12
什么叫hash function的技术要点?
啥意思?

【在 e***s 的大作中提到】
: 没求BLESS是不是就比较悲剧呢?
: 1.说一下Hash function的技术要点
: 2.说一下Hashtable
: 3.100 Million 个 10 bit integer,怎么sort快?
: 4.螺旋打印2维数组
: e.c. 1,2,3
: 4,5,6
: 7,8,9
: output: 1,2,3,6,9,8,7,4,5

y*****n
发帖数: 243
13
第3题10 bit integer 才能代表1024个数。100million个数不知到有多少个重复的把。
用个1024的数组然后记录对应的index出现的次数就好了把。
P*******U
发帖数: 203
14
import java.util.*;
public class CirclePrint {
public static void main(String[] args){
int N = 4, M = 4;
int cnt = N*M;
int[][] matrix = new int[N][M];
boolean[][] visited = new boolean[N][M];

int val = 1;
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
matrix[i][j] = val;
visited[i][j] = false;
val++;
}
}

int i = 0, j = 0;
visited[i][j] = true;
System.out.print(matrix[i][j]);
cnt--;

while(true){

j++;
while(j < M && !visited[i][j]){
visited[i][j] = true;
System.out.print(","+matrix[i][j]);
cnt--;
j++;
}
j--;

i++;
while(i < N && !visited[i][j]){
visited[i][j] = true;
System.out.print(","+matrix[i][j]);
cnt--;
i++;
}
i--;

j--;
while(j >= 0 && !visited[i][j]){
visited[i][j] = true;
System.out.print(","+matrix[i][j]);
cnt--;
j--;
}
j++;

i--;
while(i >= 0 && !visited[i][j]){
visited[i][j] = true;
System.out.print(","+matrix[i][j]);
cnt--;
i--;
}
i++;

if(cnt==0)
break;
}

}
}
c****9
发帖数: 164
15
嗯,Radix sort最快吧

【在 f**********2 的大作中提到】
: 求问第3题怎么回答最好?是不是用bucket sort?
P*******U
发帖数: 203
16
第三题就是标准的bucket sort吧,O(n)的时间
h********w
发帖数: 221
17
radix sort你保持每一个数的顺序,还是buket sort好吧,直接数组对应的index++就好了

【在 c****9 的大作中提到】
: 嗯,Radix sort最快吧
f**********2
发帖数: 2401
18
还可能有负数吧,1024不够

【在 y*****n 的大作中提到】
: 第3题10 bit integer 才能代表1024个数。100million个数不知到有多少个重复的把。
: 用个1024的数组然后记录对应的index出现的次数就好了把。

f**********2
发帖数: 2401
19
同意

就好了

【在 h********w 的大作中提到】
: radix sort你保持每一个数的顺序,还是buket sort好吧,直接数组对应的index++就好了
f**********2
发帖数: 2401
20
正解

【在 P*******U 的大作中提到】
: import java.util.*;
: public class CirclePrint {
: public static void main(String[] args){
: int N = 4, M = 4;
: int cnt = N*M;
: int[][] matrix = new int[N][M];
: boolean[][] visited = new boolean[N][M];
:
: int val = 1;
: for(int i = 0; i < N; i++){

相关主题
F家电面:group Anagrams一道G题
螺旋打印matrixLeetcode Surrounded Regions Large Case Runtime Error
求顺时针打印矩阵code这题就够凶残的了吧
进入JobHunting版参与讨论
y*****n
发帖数: 243
21
10个digit不最多能有1024个数么= =我记错了?
有负数的话从第一个digit为1的那个index(比如为n)开始提取,然后走到头,然后
round到0然后再走到n-1不就好了。

【在 f**********2 的大作中提到】
: 还可能有负数吧,1024不够
c*******2
发帖数: 173
22
这个办法不错啊

【在 y*****n 的大作中提到】
: 第3题10 bit integer 才能代表1024个数。100million个数不知到有多少个重复的把。
: 用个1024的数组然后记录对应的index出现的次数就好了把。

e***s
发帖数: 799
23
贴一个我c#的解法吧,是后来写出来的,当场写的就是一坨屎~
public static void Print(int[,] arr)
{
int n = arr.GetUpperBound(0);
int m = arr.GetUpperBound(1);
if(n == -1 && m == -1)
return;
if (n == 0)
{
for (int i = 0; i <= m; i++)
Console.Write(arr[0, i] + " ");
return;
}
if (m == 0)
{
for (int i = 0; i <= n; i++)
Console.Write(arr[i, 0] + " ");
return;
}
int a = 0;
while (a <= Math.Min(n, m) / 2)
{
for (int i = a; i <= m - a; i++)
Console.Write(arr[a, i] + " ");
for (int i = a + 1; i <= n-a; i++)
Console.Write(arr[i, m - a] + " ");
for (int i = m - a - 1; i >= a; i--)
Console.Write(arr[n - a, i] + " ");
for (int i = n - a - 1; i >= a + 1; i--)
Console.Write(arr[i, a] + " ");
a++;
}
}
s******n
发帖数: 3946
24
嗯,中间的漏了,但是角上不会打两次

【在 y*****n 的大作中提到】
: 没有说是N*N的吧。而且如果N是奇数的话是不是中间那个数打不出来? 每个角落的数
: 是不是会打2次?

f*******l
发帖数: 66
25
it is counting sort, right?

【在 y*****n 的大作中提到】
: 第3题10 bit integer 才能代表1024个数。100million个数不知到有多少个重复的把。
: 用个1024的数组然后记录对应的index出现的次数就好了把。

f*******l
发帖数: 66
26
why not just convert signed number to unsigned number?

【在 y*****n 的大作中提到】
: 10个digit不最多能有1024个数么= =我记错了?
: 有负数的话从第一个digit为1的那个index(比如为n)开始提取,然后走到头,然后
: round到0然后再走到n-1不就好了。

f*******l
发帖数: 66
27
the hash value should scatter evenly?

【在 C***U 的大作中提到】
: 什么叫hash function的技术要点?
: 啥意思?

b******u
发帖数: 81
28
4.螺旋打印2维数组
似乎应该用递归
r*****b
发帖数: 310
29
Yes, recursion should be the simplest solution for this.
Here is a post on this:
http://basicalgos.blogspot.com/2012/03/spiral-print-of-matrix.h

【在 b******u 的大作中提到】
: 4.螺旋打印2维数组
: 似乎应该用递归

y*****n
发帖数: 243
30
= = that solution can easily be changed to an while loop. it always better
to use an loop than recursion, right?

【在 r*****b 的大作中提到】
: Yes, recursion should be the simplest solution for this.
: Here is a post on this:
: http://basicalgos.blogspot.com/2012/03/spiral-print-of-matrix.h

相关主题
一道面试题,求解顺时针打印MxN矩阵的简洁递归解法
一道M$算法题。电面题一个
问个面试题sodoku solver 怎么做?
进入JobHunting版参与讨论
m********1
发帖数: 31
e***s
发帖数: 799
32
没求BLESS是不是就比较悲剧呢?
1.说一下Hash function的技术要点
2.说一下Hashtable
3.100 Million 个 10 bit integer,怎么sort快?
4.螺旋打印2维数组
e.c. 1,2,3
4,5,6
7,8,9
output: 1,2,3,6,9,8,7,4,5
y*****n
发帖数: 243
33
pat pat, 第2轮可以补救的。
加油
s******n
发帖数: 3946
34
螺旋打印有点意思
s******n
发帖数: 3946
35
估计做得不错,能答4道题,弱的两题就没时间了

【在 y*****n 的大作中提到】
: pat pat, 第2轮可以补救的。
: 加油

A**u
发帖数: 2458
36
AMZ太无聊了,
每人都问hash table

【在 e***s 的大作中提到】
: 没求BLESS是不是就比较悲剧呢?
: 1.说一下Hash function的技术要点
: 2.说一下Hashtable
: 3.100 Million 个 10 bit integer,怎么sort快?
: 4.螺旋打印2维数组
: e.c. 1,2,3
: 4,5,6
: 7,8,9
: output: 1,2,3,6,9,8,7,4,5

A**u
发帖数: 2458
37
只有螺旋打印要写代码吧
其它的瞎blabla,说说思路

【在 s******n 的大作中提到】
: 估计做得不错,能答4道题,弱的两题就没时间了
s******n
发帖数: 3946
38
还挺复杂,你来写一个吧。

【在 A**u 的大作中提到】
: 只有螺旋打印要写代码吧
: 其它的瞎blabla,说说思路

s******n
发帖数: 3946
39
螺旋打印:
int array[N][N];
for (int i=0; i for (int j=i; j for (int j=i; j for (int j=N-i-1; j>0; --j) cout< for (int j=N-i-1; j>0; --j) cout< }
f**********2
发帖数: 2401
40
求问第3题怎么回答最好?是不是用bucket sort?
相关主题
sodoku solver 怎么做?matrix question
MS intern 电面被拒,附上面试过程考古到一道题
微软onsite一道面试题
进入JobHunting版参与讨论
y*****n
发帖数: 243
41
没有说是N*N的吧。而且如果N是奇数的话是不是中间那个数打不出来? 每个角落的数
是不是会打2次?

【在 s******n 的大作中提到】
: 螺旋打印:
: int array[N][N];
: for (int i=0; i: for (int j=i; j: for (int j=i; j: for (int j=N-i-1; j>0; --j) cout<: for (int j=N-i-1; j>0; --j) cout<: }

y*****n
发帖数: 243
42
public static void printMatrixCircle(int[][] matrix) {
// there is more row here
int startRow = 0;
int startColumn = 0;
int endRow = matrix.length - 1;
int endColumn = matrix[0].length - 1;
while (startRow <= endRow && startColumn <= endColumn) {
helpPrintMatrixCircle(matrix, startRow, startColumn, endRow, endColumn);
startRow++;
endRow--;
startColumn++;
endColumn--;
}
}
public static void helpPrintMatrixCircle(int[][] matrix, int startRow,
int startColumn,
int endRow, int endColumn) {
// special case only one row
if (startRow == endRow) {
for (int i = startColumn; i <= endColumn; i++) {
System.out.print(matrix[startRow][i] + " ");
}
return;
}
// special case only one column
if (startColumn == endColumn) {
for (int i = startRow; i <= endRow; i++) {
System.out.print(matrix[i][startColumn] + " ");
}
return;
}
// print first row
for (int i = startColumn; i <= endColumn; i++) {
System.out.println(matrix[startRow][i]);
}
// print column at right side
for (int i = startRow + 1; i <= endRow; i++) {
System.out.println(matrix[i][endColumn] + " ");
}
// print second row
for (int i = endColumn - 1; i >= startColumn; i--) {
System.out.println(matrix[endRow][i] + " ");
}
// print column at left
for (int i = endRow - 1; i >= startRow + 1; i--) {
System.out.println(matrix[i][startColumn] + " ");
}
}
C***U
发帖数: 2406
43
什么叫hash function的技术要点?
啥意思?

【在 e***s 的大作中提到】
: 没求BLESS是不是就比较悲剧呢?
: 1.说一下Hash function的技术要点
: 2.说一下Hashtable
: 3.100 Million 个 10 bit integer,怎么sort快?
: 4.螺旋打印2维数组
: e.c. 1,2,3
: 4,5,6
: 7,8,9
: output: 1,2,3,6,9,8,7,4,5

y*****n
发帖数: 243
44
第3题10 bit integer 才能代表1024个数。100million个数不知到有多少个重复的把。
用个1024的数组然后记录对应的index出现的次数就好了把。
P*******U
发帖数: 203
45
import java.util.*;
public class CirclePrint {
public static void main(String[] args){
int N = 4, M = 4;
int cnt = N*M;
int[][] matrix = new int[N][M];
boolean[][] visited = new boolean[N][M];

int val = 1;
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
matrix[i][j] = val;
visited[i][j] = false;
val++;
}
}

int i = 0, j = 0;
visited[i][j] = true;
System.out.print(matrix[i][j]);
cnt--;

while(true){

j++;
while(j < M && !visited[i][j]){
visited[i][j] = true;
System.out.print(","+matrix[i][j]);
cnt--;
j++;
}
j--;

i++;
while(i < N && !visited[i][j]){
visited[i][j] = true;
System.out.print(","+matrix[i][j]);
cnt--;
i++;
}
i--;

j--;
while(j >= 0 && !visited[i][j]){
visited[i][j] = true;
System.out.print(","+matrix[i][j]);
cnt--;
j--;
}
j++;

i--;
while(i >= 0 && !visited[i][j]){
visited[i][j] = true;
System.out.print(","+matrix[i][j]);
cnt--;
i--;
}
i++;

if(cnt==0)
break;
}

}
}
c****9
发帖数: 164
46
嗯,Radix sort最快吧

【在 f**********2 的大作中提到】
: 求问第3题怎么回答最好?是不是用bucket sort?
P*******U
发帖数: 203
47
第三题就是标准的bucket sort吧,O(n)的时间
h********w
发帖数: 221
48
radix sort你保持每一个数的顺序,还是buket sort好吧,直接数组对应的index++就好了

【在 c****9 的大作中提到】
: 嗯,Radix sort最快吧
f**********2
发帖数: 2401
49
还可能有负数吧,1024不够

【在 y*****n 的大作中提到】
: 第3题10 bit integer 才能代表1024个数。100million个数不知到有多少个重复的把。
: 用个1024的数组然后记录对应的index出现的次数就好了把。

f**********2
发帖数: 2401
50
同意

就好了

【在 h********w 的大作中提到】
: radix sort你保持每一个数的顺序,还是buket sort好吧,直接数组对应的index++就好了
相关主题
O(N) sort integer array螺旋打印matrix
书上关于search和sorting的部分 应该不用全看吧?求顺时针打印矩阵code
F家电面:group Anagrams一道G题
进入JobHunting版参与讨论
f**********2
发帖数: 2401
51
正解

【在 P*******U 的大作中提到】
: import java.util.*;
: public class CirclePrint {
: public static void main(String[] args){
: int N = 4, M = 4;
: int cnt = N*M;
: int[][] matrix = new int[N][M];
: boolean[][] visited = new boolean[N][M];
:
: int val = 1;
: for(int i = 0; i < N; i++){

y*****n
发帖数: 243
52
10个digit不最多能有1024个数么= =我记错了?
有负数的话从第一个digit为1的那个index(比如为n)开始提取,然后走到头,然后
round到0然后再走到n-1不就好了。

【在 f**********2 的大作中提到】
: 还可能有负数吧,1024不够
c*******2
发帖数: 173
53
这个办法不错啊

【在 y*****n 的大作中提到】
: 第3题10 bit integer 才能代表1024个数。100million个数不知到有多少个重复的把。
: 用个1024的数组然后记录对应的index出现的次数就好了把。

e***s
发帖数: 799
54
贴一个我c#的解法吧,是后来写出来的,当场写的就是一坨屎~
public static void Print(int[,] arr)
{
int n = arr.GetUpperBound(0);
int m = arr.GetUpperBound(1);
if(n == -1 && m == -1)
return;
if (n == 0)
{
for (int i = 0; i <= m; i++)
Console.Write(arr[0, i] + " ");
return;
}
if (m == 0)
{
for (int i = 0; i <= n; i++)
Console.Write(arr[i, 0] + " ");
return;
}
int a = 0;
while (a <= Math.Min(n, m) / 2)
{
for (int i = a; i <= m - a; i++)
Console.Write(arr[a, i] + " ");
for (int i = a + 1; i <= n-a; i++)
Console.Write(arr[i, m - a] + " ");
for (int i = m - a - 1; i >= a; i--)
Console.Write(arr[n - a, i] + " ");
for (int i = n - a - 1; i >= a + 1; i--)
Console.Write(arr[i, a] + " ");
a++;
}
}
s******n
发帖数: 3946
55
嗯,中间的漏了,但是角上不会打两次

【在 y*****n 的大作中提到】
: 没有说是N*N的吧。而且如果N是奇数的话是不是中间那个数打不出来? 每个角落的数
: 是不是会打2次?

f*******l
发帖数: 66
56
it is counting sort, right?

【在 y*****n 的大作中提到】
: 第3题10 bit integer 才能代表1024个数。100million个数不知到有多少个重复的把。
: 用个1024的数组然后记录对应的index出现的次数就好了把。

f*******l
发帖数: 66
57
why not just convert signed number to unsigned number?

【在 y*****n 的大作中提到】
: 10个digit不最多能有1024个数么= =我记错了?
: 有负数的话从第一个digit为1的那个index(比如为n)开始提取,然后走到头,然后
: round到0然后再走到n-1不就好了。

f*******l
发帖数: 66
58
the hash value should scatter evenly?

【在 C***U 的大作中提到】
: 什么叫hash function的技术要点?
: 啥意思?

b******u
发帖数: 81
59
4.螺旋打印2维数组
似乎应该用递归
r*****b
发帖数: 310
60
Yes, recursion should be the simplest solution for this.
Here is a post on this:
http://basicalgos.blogspot.com/2012/03/spiral-print-of-matrix.h

【在 b******u 的大作中提到】
: 4.螺旋打印2维数组
: 似乎应该用递归

相关主题
Leetcode Surrounded Regions Large Case Runtime Error一道M$算法题。
这题就够凶残的了吧问个面试题
一道面试题,求解顺时针打印MxN矩阵的简洁递归解法
进入JobHunting版参与讨论
y*****n
发帖数: 243
61
= = that solution can easily be changed to an while loop. it always better
to use an loop than recursion, right?

【在 r*****b 的大作中提到】
: Yes, recursion should be the simplest solution for this.
: Here is a post on this:
: http://basicalgos.blogspot.com/2012/03/spiral-print-of-matrix.h

m********1
发帖数: 31
m*****l
发帖数: 95
63
10bit只能表示1024个数,所以不用考虑负数,就像32位integer表示的数是-2^31到2^
31-1,一共2^32个数

【在 f**********2 的大作中提到】
: 还可能有负数吧,1024不够
s********y
发帖数: 40
64
写了个C++版本的螺旋打印。。
void printCircular(int** data,int rows, int cols)
{
int minRow = 0;
int minCol = 0;
int maxRow = rows-1;
int maxCol = cols-1;
while(minRow <= maxRow && minCol <=maxCol)
{
for(int j = minCol; j <= maxCol; j++)
std::cout< minRow++;
for(int i = minRow; i <= maxRow; i++)
std::cout< maxCol--;
for(int j = maxCol; j >= minCol; j--)
std::cout< maxRow--;
for(int i = maxRow; i>=minRow; i--)
std::cout< minCol++;
}
}
a******9
发帖数: 12
65
public class Circle_Print {
public static void print(int[][] A){
int m = A[0].length;
int n = A.length - 1;
int i = 0;
int j = 0;
boolean forwardDownward = true;
while(true){
if(m == 0) break;
else{
for (int p = 0; p < m-1; p++) {
System.out.print(A[i][j]+",");
if(forwardDownward) j++;
else j--;
}
System.out.print(A[i][j]+",");
m--;
}

if(n==0) break;
else{
if(forwardDownward) i++;
else i--;
for (int q = 0; q < n-1; q++) {
System.out.print(A[i][j]+",");
if(forwardDownward) i++;
else i--;
}

System.out.print(A[i][j]+",");
n--;
forwardDownward = !forwardDownward;
if(forwardDownward) j++;
else j--;
}
}
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
Leetcode Surrounded Regions Large Case Runtime ErrorMS intern 电面被拒,附上面试过程
这题就够凶残的了吧微软onsite
一道面试题,求解matrix question
一道M$算法题。考古到一道题
问个面试题一道面试题
顺时针打印MxN矩阵的简洁递归解法O(N) sort integer array
电面题一个书上关于search和sorting的部分 应该不用全看吧?
sodoku solver 怎么做?F家电面:group Anagrams
相关话题的讨论汇总
话题: int话题: matrix话题: visited话题: startrow