leetcode之Search a 2D Matrix

写在前面的话-----

1:师兄给的豆瓣上关于leetcode上题目的分类。http://www.douban.com/note/330562764/?qq-pf-to=pcqq.c2c

2:上周五老板给开会,针对毕设的事情问了我70分钟,其中不乏刁难的成分。但是转换角度,这样可以督促自己学术严谨。论文是一方面,工作是非常重要的,就像师兄说的一开始不能给自己定的目标太低,否则真的就会有一个低的起点。下面是引用师兄的话:

学习这种事情不要认为你以后不从事这个就不学了。

第一你可能真的会干技术

第二好多东西是相通的

第三思考是一种习惯

第四你因为困难放弃一次,肯定会有第二次

只是因为你害怕,所以不敢做

做就行了,不然老是闲着总是在犹豫选择中恐惧。

每个人身边都有一只叫运气”的精灵,他们能给主人带来好运,刚开始的时候,它可能连帮你抵御衰运的技能也没有,可是碰的每一次壁,遇到的每一个挫折,吃的每一次亏,精灵都会默默吞食。等有一天,它打个饱嗝,之前遭遇的一切痛苦都会化作美好的事物出现。

有的时候压力和偏见往往不是来自别人。更多的是需要纠结自己的偏见,认可自己。

一切不动手不实战的学习编程语言都是耍流氓。

像超级马里奥一样,一路吃点小蘑菇,然后跳到旗杆上扯旗子,换到高级场景接着小跑顶蘑菇。

加油,你是打不死的!!

------------------------------------------------------------

这道题和剑指offer中关于数组那一节的面试题3是一样的。解决的思路就是首先和最右上角的数比较,如果要查找的数小于右上角的数,则可以不再比较这个数所在的一列,如果要查找的数大于这个数,则不再比较这一行。每一次都在数组的查找范围内提出一行或一列,一步步缩小,直到找到要查找的数,或查找范围为空。

在这道题里面,首先练习了java中二维数组的使用,其次练习了如何从键盘上输入字符。

下面附上这道题的源码:

public class solution {
  public static boolean searchMatrix(int[][] matrix, int target) {
    int rows = matrix.length;
    int row = 0 ;
    int columns = matrix[0].length;
    int column = columns - 1;
    while(row < rows&column>=0){
      if(target == matrix[row][column]){
        return true;
      }
      else{
        if(target < matrix[row][column]){
        column--;
        }
        else{
          row++;
          }
      }
    }
    return false;
  }
public static void main(String[] args){
  Scanner input = new Scanner(System.in);
  System.out.println("please input rows");
  int rows = input.nextInt() ;
  System.out.println("please input columns");
  int columns = input.nextInt();
  int[][] matrix = new int[rows][columns];
  for(int i = 0;i<rows;i++){
    for(int j = 0;j<columns;j++){
      System.out.println("please input :");
      matrix[i][j] = input.nextInt();

    }
  }
  int target = 7;
  boolean s = searchMatrix(matrix,target);
  System.out.println(s);

  }
}

博客好久没写了,加油坚持下去,我将继续在这里分享我的心情,以及学到的东西。

原文地址:https://www.cnblogs.com/gracyandjohn/p/4380433.html