在行列都排好序的矩阵中找指定的数-Java

在行列都排好序的矩阵中找指定的数

http://www.nowcoder.com/questionTerminal/b929be9dbbaa489a91afa3fec195c228

1、按题意来暴力解法

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] string = reader.readLine().split(" ");
        int n = Integer.parseInt(string[0]);
        int m = Integer.parseInt(string[1]);
        int k = Integer.parseInt(string[2]);
        for (int i = 0; i < n; i++) {
            string = reader.readLine().split(" ");
            for (int j = 0; j < m; j++) {
                if (Integer.parseInt(string[j]) == k) {
                    System.out.println("Yes");
                    return;
                }
            }
        }
        reader.close();
        System.out.println("No");
    }
}

2、优化方法,从右上角开始查找

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] string = reader.readLine().split(" ");
        int n = Integer.parseInt(string[0]);
        int m = Integer.parseInt(string[1]);
        int k = Integer.parseInt(string[2]);
        int[][] arr = new int[n][m];
        for(int i = 0;i < n;++i){
           string  =  reader.readLine().split(" ");
            for(int j = 0;j < m;++j){
                arr[i][j] = Integer.parseInt(string[j]);
            }
        }
        reader.close();
        int x = 0, y = m -1;
        while( x < n && y >= 0){
            if(arr[x][y] == k){
                System.out.println("Yes");
                return;
            }else if(arr[x][y] < k){
                x++;
            }else{
                y--;
            }
        }
        System.out.println("No");
    }
}
全部评论

相关推荐

12-26 20:46
复旦大学 C++
国棉17厂丶小王:拿了offer的那个周末晚上去网吧通宵,去网吧不知道玩什么刷了lc的每日一题,然后试着第一次打开了三角洲行动,从此少了一个已经刷了700道题的lc用户,但是烽火地带多了一只🐭🐭
点赞 评论 收藏
分享
一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
评论
2
收藏
分享
牛客网
牛客企业服务