码迷,mamicode.com
首页 > 编程语言 > 详细

经典面试算法题:线性查找有序二维数组

时间:2016-10-24 02:39:55      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:二维数组   display   main   div   生成   ++   exti   arc   .com   

技术分享

从右上角开始搜索,当前的元素map[x][y]和要搜索的数n有如下可能:

map[x][y]==n --> 返回true
map[x][y]>n   --> 向左移动
map[x][y]<n   --> 向下移动

 

搜索过程例子:
技术分享

 

AC代码:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        int n=sc.nextInt();
        int m=sc.nextInt();
        int k=sc.nextInt();
        
        int x[][]=new int[n][m];
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                x[i][j]=sc.nextInt();
            }
        }
        
        boolean ans=search(x,k);
        System.out.println(ans);
        
    }
    
    public static boolean search(int map[][],int n){
        int x=0,y=map.length-1;
        while(x<map.length && y>=0){
            if(map[x][y]==n) return true;
            else if(map[x][y]<n) x++;
            else if(map[x][y]>n) y--;
        }
        return false;
    }
}

 

生成测试数据的代码:

import java.util.Random;

public class Main_007 {

    public static void main(String[] args) {
        
        int x[][]=gen(10,10);
        
        show(x);
        
    }
    
    public static int[][] gen(int n,int m){
        int res[][]=new int[n][m];
        
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                int max=0;
                if(i-1>=0) max=res[i-1][j];
                if(j-1>=0) max=Math.max(max,res[i][j-1]);
                res[i][j]=new Random().nextInt(10)+max+1;
            }
        }
        
        return res;
    }
    
    public static void show(int x[][]){
        for(int i=0;i<x.length;i++){
            for(int j=0;j<x[i].length;j++){
                System.out.printf("%3d ",x[i][j]);
            }
            System.out.println();
        }
    }
    
}

经典面试算法题:线性查找有序二维数组

标签:二维数组   display   main   div   生成   ++   exti   arc   .com   

原文地址:http://www.cnblogs.com/cc11001100/p/5991601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!