阿里面试算法题-二维递增数组的查找
2016-03-25 22:47
495 查看
阿里面试算法题-二维递增数组的查找
注意:转载请说明,来自转自itboy-木小草,尊重原创,尊重技术。题目:
一个n*m的二维数组,每一行从左到右依次递增,每一列从上到下依次递增。问:给你一个数字,如何能快速的输出他在数组中的位置。/** * 一个n*m的二维数组,每一行从左到右依次递增,每一列从上到下依次递增。 * 问:给你一个数字,如何能快速的输出他在数组中的位置。 */ public static int[] getPos(int[][] a,int tag) { int len = a.length; int col = a[0].length; /* * 排除极端可能 */ if (a[0][0]>tag || a[len-1][col-1]<tag) { return new int[]{-1,-1}; } for (int i = 0,j = col - 1; i < len && j >= 0;) { if (a[i][j] == tag) { return new int[]{i,j}; }else if (a[i][j] < tag) { i++; }else { j--; } } return new int[]{-1,-1}; } public static void main(String[] args) { int[][] a = new int[][]{{1,2,3},{2,3,4},{5,8,9},{7,10,11}}; int[] result = getPos(a, 6); System.out.println(result[0] +","+ result[1]); result = getPos(a, 7); System.out.println(result[0] +","+ result[1]); }
时间复杂度:n+m
相关文章推荐
- 第一次面试的心得体会
- 百度运维实习生面试总结
- PHP程序员的技术成长规划
- 为什么程序员工资相对于传统行业工资显得略高
- 面试笔试试题精选
- 面试准备android(一)
- 百度面试总结
- 小程序员刷题之路_1
- 腾讯与唯品会笔试面试经历
- Android面试题集锦二
- Java已经开始影响这一代程序员
- 40个Java集合面试问题和答案
- 求职简历-Resume
- 轻松搞定面试中的二叉树题目
- hashCode()常见面试题(持续更新)
- 编程面试的10大算法概念汇总
- JAVA多线程面试50题 -- 内容由浅及深,全会的是神
- JAVA多线程和并发基础面试问答
- 我作为一个面试官的感想
- 程序员应该知道的97件事-读书笔记