您的位置:首页 > 其它

一个矩阵,从左到右递增,从上到下递增,从这个矩阵中找某个数

2016-01-07 01:39 211 查看
private int[] searchMatrix(int a[][], int val) {
int result[] = {-1, -1};
if (a == null || a.length == 0)
return result;
int rstart = 0;
int rend = a.length;
int column = a[0].length;
while (rstart < rend && column > 1) {
int t[] = new int[rend - rstart];
for (int i = rstart;i < rend; i++) {
t[i] = a[i][column - 1];
}
printLog(Arrays.toString(t));
int pos = binarySearch(t, val);
if (t[pos] == val) {
result[0] = pos + rstart;
result[1] = column - 1;
return result;
} else if (t[pos] > val) {
rstart = pos;
column--;
} else {
return result;
}
}
return result;
}

private int binarySearch(int[] a, int val) {
if (a == null || a.length == 0)
return -1;
int start = 0;
int end = a.length;
int mid = 0;
while (start <= end) {
mid = (start + end)/2;
if (a[mid] == val)
return mid;
else if (a[mid] > val) {
end = mid - 1;
} else {
start = mid + 1;
}
}
return start;
}


测试代码:

int a[][] = {{1,3,4,7,8},{2,4,5,9,10},{4,7,9,11,12}};
int result[] = searchMatrix(a, 5);
printLog("result : "+ Arrays.toString(result));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: