zoukankan      html  css  js  c++  java
  • 经典面试算法题:线性查找有序二维数组

    从右上角开始搜索,当前的元素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();
            }
        }
        
    }
  • 相关阅读:
    利用 img 和 script 发送跨域请求
    tomcat 内存配置
    servlet request.getParamter 有时获取参数为null
    windows本地无法启动sqlserver服务
    mac用virtualbox 装win7联网及分辨率设置
    奇怪的transform bug
    mysql 同时执行多条update语句
    二进制树形算法
    协议栈中使用crc校验函数
    引用布局
  • 原文地址:https://www.cnblogs.com/cc11001100/p/5991601.html
Copyright © 2011-2022 走看看