题
思
一开始按规则变化行列索引,结果超时。
看了下超时的例子,发现就是只有一列,所以超时的原因就是有太多的的nums[row][col]
不存在了,多判断了很多时间。
所以就只能先把数据取出来排个序(按行列和以及行号排序),再把值那一列取出来即可。
代码
class Solution {
public int[] findDiagonalOrder(List<List<Integer>> nums) {
List<int[]> result = new ArrayList<int[]>();
for (int i = 0; i < nums.size(); i++) {
for (int j = 0; j < nums.get(i).size(); j++) {
result.add(new int[] { i + j, i, nums.get(i).get(j) });
}
}
result.sort((a, b) -> {
if (a[0] == b[0]) {
return b[1] - a[1];
}
return a[0] - b[0];
});
int[] res = new int[result.size()];
for (int i = 0; i < res.length; i++) {
res[i] = result.get(i)[2];
}
return res;
}
}