j*****y 发帖数: 1071 | 1 给一个矩阵比如
1 2 3 4
5 6 7 8
9 10 11 12
按照对角线的方式输出
1
2 5
3 6 9
4 7 10
8 11
12 |
l*****a 发帖数: 14598 | 2 brute force就ok吧?
还有什么更优解?
【在 j*****y 的大作中提到】 : 给一个矩阵比如 : 1 2 3 4 : 5 6 7 8 : 9 10 11 12 : 按照对角线的方式输出 : 1 : 2 5 : 3 6 9 : 4 7 10 : 8 11
|
K*****k 发帖数: 430 | 3 这题leetcode没收录?应该和螺旋打印矩阵一类题? |
j*****y 发帖数: 1071 | 4 不是考算法,写code
【在 l*****a 的大作中提到】 : brute force就ok吧? : 还有什么更优解?
|
t*********h 发帖数: 941 | 5 looks fairly straightforward?
【在 j*****y 的大作中提到】 : 给一个矩阵比如 : 1 2 3 4 : 5 6 7 8 : 9 10 11 12 : 按照对角线的方式输出 : 1 : 2 5 : 3 6 9 : 4 7 10 : 8 11
|
l*****a 发帖数: 14598 | 6 for(indexy=0;indexy
{
indexx=0;
while(indexx=0) {
system.out.print(array[indexx][indexy]);
indexx++;
indexy--;
}
system.out.println();
}
然后再输出下一半
【在 j*****y 的大作中提到】 : 不是考算法,写code
|
p*****2 发帖数: 21240 | 7 我也写了一个练练。
mat=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
def helper(mat, i, j)
while i=0
print "#{mat[i][j]} "
i+=1
j-=1
end
puts
end
def print_mat(mat)
(0...mat[0].length).each {|k| helper(mat,0,k)}
(1...mat.length).each {|k| helper(mat,k,mat[0].length-1)}
end
print_mat(mat) |
l*******b 发帖数: 2586 | 8 int m = mat.size() - 1, n = mat[0].size() - 1;
for(int k = 0; k <= m + n; ++k) {
int j = min(n,k), i = k - j;
while(i <= min(m,k))
cout << mat[i++][j--];
cout << endl;
}
问题太多,再改,悲剧呀,这种题
顺序对了,哈哈 |
j*****y 发帖数: 1071 | 9 你这个好像有点问题,对于同一个 i, 输出了很多 mat[i][j]
【在 l*******b 的大作中提到】 : int m = mat.size() - 1, n = mat[0].size() - 1; : for(int k = 0; k <= m + n; ++k) { : int j = min(n,k), i = k - j; : while(i <= min(m,k)) : cout << mat[i++][j--]; : cout << endl; : } : 问题太多,再改,悲剧呀,这种题 : 顺序对了,哈哈
|
j*****y 发帖数: 1071 | 10 上半部分按照列指标扫描。 下半部分按照行指标扫描.
【在 l*****a 的大作中提到】 : for(indexy=0;indexy: { : indexx=0; : while(indexx=0) { : system.out.print(array[indexx][indexy]); : indexx++; : indexy--; : } : system.out.println(); : }
|
l*******b 发帖数: 2586 | 11 错啦,得改一下
【在 j*****y 的大作中提到】 : 上半部分按照列指标扫描。 下半部分按照行指标扫描.
|
c*****a 发帖数: 808 | 12 練一下
//print matrix in diagnal
public static void printMat(int[][]mat){
for(int i =0;i
int temp = i, j =0;
while( i>=0 && j
System.out.print(mat[j++][i--] +" ");
i=temp;
System.out.println();
}
for(int i =1;i
int temp = i, j=mat[0].length-1;
while(i=0)
System.out.print(mat[i++][j--] +" ");
i=temp;
System.out.println();
}
}
//test
public static void main(String[]args){
int mat[][]=new int[5][5];
int c=0;
for(int i =0;i<5;i++)
for(int j=0;j<5;j++){
mat[i][j]=c;
c++;
}
for(int i =0;i<5;i++){
for(int j=0;j<5;j++){
System.out.print(mat[i][j]+" ");
}
System.out.println();
}
printMat(mat);
}
/*
result
0
1 5
2 6 10
3 7 11 15
4 8 12 16 20
9 13 17 21
14 18 22
19 23
24
*/ |