在查找有序二维数组中查找元素
来源:互联网 发布:管家婆软件管理员密码 编辑:程序博客网 时间:2024/05/17 09:19
解题思路:
代码实现:
public class SortedMatrixElementFinder {public static boolean find(int element, int[][] matrix) {SortedMatrix theMatrix = new SortedMatrix(matrix);int topRightElement = theMatrix.getTopRightElement();while (topRightElement != element) {if (element < topRightElement)theMatrix.excludeThisCol();else if (element > topRightElement)theMatrix.excludeThisRow();if (!theMatrix.isLegalIndex())return false;topRightElement = theMatrix.getTopRightElement();}return true;}private static class SortedMatrix {private int[][] matrix;private int currentCol;private int currentRow;public int getTopRightElement() {return this.matrix[currentRow][currentCol];}public void excludeThisRow() {currentRow++;}public boolean isLegalIndex() {return currentCol >= 0 && currentRow >= 0;}public void excludeThisCol() {currentCol--;}public SortedMatrix(int[][] matrix) {if (matrix.length < 1 || matrix[0].length < 1)throw new IllegalArgumentException();this.matrix = matrix;currentRow = 0;currentCol = matrix[0].length - 1;}}}
测试代码:
import junit.framework.Assert;import org.junit.Test;import algorithm.SortedMatrixElementFinder;public class FindElementInSortedMatrix {private int[][] matrix = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};@Testpublic void elementExist(){Assert.assertEquals(true, SortedMatrixElementFinder.find(6, matrix));}@Testpublic void elementNotExist(){Assert.assertEquals(false, SortedMatrixElementFinder.find(3, matrix));}}
代码已通过测试,欢迎大家就代码的任何问题提出建议,共同进步~~
注:题目来源于<<剑指offer>>
- 在查找有序二维数组中查找元素
- 3 - 在有序二维数组中查找元素
- (java)二维有序数组中查找元素
- 有序二维数组中查找指定元素
- 有序二维数组查找元素
- 有序二维数组查找元素
- 二维有序数组中查找
- 有序二维数组中查找
- 二维有序数组中查找
- 在二维数组中查找元素
- 每天一道LeetCode-----在有序的二维数组中查找某个元素
- 二维有序数组查找
- 二维有序数组查找
- 二维有序数组查找
- 剑指offer——在二维数组中查找元素
- 有序二维数组的查找
- 有序二维数组的查找
- 从二维数组中查找某个元素
- C#对于任意对象进行深拷贝(DeepCopy)
- unity3d 屏幕截图 核心代码
- [FD] Waiting for Flash Player to connect to debugger问题与解决
- jkljkljkljkl
- mysql 把数据库从一个服务器复制到另一个服务器介绍
- 在查找有序二维数组中查找元素
- linux C高级程序员指南
- HTML5 worker 多线程
- android 进程内存查看
- Java凭什么比PHP+MYSQL开发的B2B软件值钱
- 数据持久化保存(文件读写,归档,sql读写)
- JSEnhancements(VS2010 JS折叠插件)
- hdu 2164
- sprintf 格式化字符串的用法说明