一个矩阵,从左到右递增,从上到下递增,从这个矩阵中找某个数
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));
相关文章推荐
- 你真的了解android getX getRawX view移动的原理吗????
- 史上最易懂的Android jni开发资料--NDK环境搭建
- Python 学习过程一些小的知识点汇总 备忘
- 多点触摸与单点触摸接口主要区别【转】
- AndroidStudio-/vendor/lib, /system/lib]]] couldn't find "libweibosdkcore.so"
- 程序员的数学 -- 目录
- 02Del.ashx(删除班级)
- Linux 内核驱动--多点触摸接口【转】
- UVA 11426 - GCD - Extreme (II) 欧拉函数-数学
- Unity项目开发准则
- 二叉树的序列化和反序列化
- [看书日记20160107]消息机制
- 采用html 的a标签,href连接为文件时无法下载解决方案
- Linux触摸屏驱动测试程序范例【转】
- 一个程序员的2015年总结
- Sicily 1325. Digit Generator
- 摘花生 http://bailian.openjudge.cn/summeracm2014final/L/
- 05StuList.aspx(学生列表)
- Linux内核触摸屏驱动--多点触摸 【转】
- Mac用CornerStone配置SVN,HTTP及svn简单使用说明