(java)二维有序数组中查找元素
2016-09-14 16:01
295 查看
题目大意:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
(1)一看到有序数组就想到了二分法查找,而在这个二维数组中,无法先按行或者先按列查找
(2)看了一下,不能从左上角和右下角开始查找和比较元素(不知道向下还是向右)
(3)不能从中间对角线开始比较(二异性)
正确的是:从左下角或者右上角开始比较。(例如右上角)因为这样元素大就可以向下移动元素小就可以向左移动
代码如下:
public class Solution {
public boolean Find(int [][] array,int target) {
int row=0,col=array[0].length-1;
while(row<array.length && col>=0){
if(array[row][col]==target){
return true;
}else if(array[row][col]<target){
row++;
}else{
col--;
}
}
return false;
}
}
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
(1)一看到有序数组就想到了二分法查找,而在这个二维数组中,无法先按行或者先按列查找
(2)看了一下,不能从左上角和右下角开始查找和比较元素(不知道向下还是向右)
(3)不能从中间对角线开始比较(二异性)
正确的是:从左下角或者右上角开始比较。(例如右上角)因为这样元素大就可以向下移动元素小就可以向左移动
代码如下:
public class Solution {
public boolean Find(int [][] array,int target) {
int row=0,col=array[0].length-1;
while(row<array.length && col>=0){
if(array[row][col]==target){
return true;
}else if(array[row][col]<target){
row++;
}else{
col--;
}
}
return false;
}
}
相关文章推荐
- 在旋转有序数组中查找元素
- Java中数组Arrays.binarySearch,快速查找数组内元素位置
- 二维有序数组查找某值
- 查找两个有序数组的公共元素
- merge两个有序数组 & 查找一个有序数组中指定元素
- Java 旋转数组查找旋转点和任意元素(元素可重复)
- leetcode——Search a 2D Matrix 二维有序数组查找(AC)
- Java--给定两个有序的数组,长度分别为m和n,求这两个数组中的第K个元素。
- java version : 查找有序数组中等于给定值的2个数
- 数组的查找,插入元素保证数组有序
- 设计一个模板类Sample,用于对一个有序数组采用二分法查找元素下标
- 二维有序数组查找
- ] 两个有序非重数组,如果查找数组之间的重复元素 (未完成)
- 面试题精选(75):经过旋转的有序数组中的元素查找(要求复杂度为O(lgn))
- 在旋转后的有序数组中查找元素,要求O(logn)的时间复杂度
- Java学习之数组1(1.数组的声明;2.元素为引用数据类型的数组;3.关于main方法里的String[] args;4.数组排序;5.数3退1 数组算法,(用数组模拟链表);6数组查找之二分法;7数组的拷贝)
- java数组中根据元素查找位置
- 查找二维排序数组中是否含有某个元素
- leetcode——Search a 2D Matrix 二维有序数组查找(AC)
- 两个有序非重数组,如果查找数组之间的重复元素