矩阵元素查找

矩阵元素查找

http://www.nowcoder.com/questionTerminal/3afe6fabdb2c46ed98f06cfd9a20f2ce

二分查找或者顺序查找都可以,这个题有点恶心,他说行和列都是从小到大有序的结果只是行内有序,还以为整个在列上也是递增呢,恶心……
所以查找符合条件行时没办法使用二分,这里老老实实循环 ,找行中匹配元素时可以使用二分

import java.util.*;

public class Finder {

    public int[] findElement2(int[][] mat, int n, int m, int x) {
        // write code here
        if(mat[0][0]>x||mat[n-1][m-1]<x){
            return new int[] {-1,-1};
        }
        int i=0;
        while(i<n){
            if(mat[i][0]<=x&&mat[i][m-1]>=x){

                for(int j=0;j<m;j++){
                    if(mat[i][j]==x){
                        return new int[]{i,j};
                    }
                }
            }
            i++;
        }


        return new int[] {-1,-1};


    }

    public int[] findElement(int[][] mat, int n, int m, int x) {
        // write code here
            if(mat[0][0]>x||mat[n-1][m-1]<x){
            return new int[] {-1,-1};
        }
        int i=0;
        while(i<n){
            if(mat[i][0]<=x&&mat[i][m-1]>=x){

                int j=0;
                int lowJ=0;
                int highJ=m-1;
                while(lowJ<=highJ){
                    j=(highJ+lowJ)/2;
                    if(mat[i][j]>x){
                        highJ=j-1;
                    }else if(mat[i][j]<x){
                        lowJ=j+1;
                    }else{
                        return new int[]{i,j};
                    }
                }
            }
            i++;
        }


        return new int[] {-1,-1};


    }
}
全部评论
**,看了测试用例,还真的是行内有序,太坑人了,这题目乱写
点赞 回复 分享
发布于 2021-05-18 11:16
既然是行内有序,为啥楼下的答案就能通过 import java.util.*; public class Finder { public int[] findElement(int[][] mat, int n, int m, int x) { int nn = n-1; int mm = 0; while(nn >= 0 && mm <= m-1){ if(mat[nn][mm] == x) return new int[]{nn,mm}; //如果此时元素大于目标值,则nn--,往上寻找 else if(mat[nn][mm] > x) nn--; //如果此时元素小于目标值,则mm++,往右寻找 else mm++; } return new int[]{}; } }
点赞 回复 分享
发布于 2020-12-10 20:04

相关推荐

在打卡的大老虎很想潜...:你在找实习,没啥实习经历,技术栈放前面,项目多就分两页写,太紧凑了,项目你最多写两个,讲清楚就行,项目背景。用到的技术栈、亮点、难点如何解决,人工智能进面太难了,需求少。你可以加最新大模型的东西
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务