杨氏矩阵查找元素位置Java实现

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  /** 判断二维矩阵每列合法性 */

  if (matrix != null && rows > 0 && columns > 0) {

  int rowLength = matrix.length;

  if (columns <= rowLength) {

  int columnLength = matrix[0].length;

  for (int i = 1; i < rowLength; i++) {

  columnLength = columnLength > matrix[i].length ? columnLength

  : matrix[i].length;

  if (columnLength > columns) {

  return isValid;

  }

  }

  isValid = true;

  }

  } else {

  System.out.println(“矩阵输入非法”);

  }

  return isValid;

  }

  /**

  * @param result

  */

  public static void printResult(List result) {

  System.out.println(“=====Begin=====”);

  if (result.size() == 0) {

  System.out.println(“There is no result”);

  }

  for (YoungTableau yt : result) {

  System.out.println(“find value:” + yt.getValue() + ” column:”

  + yt.getRow() + ” column:” + yt.getColumn());

  }

  System.out.println(“=====End=====”);

  }

  /**

  * @param matrix

  * @param rows

  * @param columns

  * @param target

  * @return

  */

  public static List find(int[][] matrix, int rows,

  int columns, int target) {

  List result = new ArrayList();

  /** 判空及异常的判断 */

  if (isValid(matrix, rows, columns)) {

  /** 先以右上角的节点为开始 */

  int row = 0;

  int column = columns – 1;

  /** 结束循环的条件 */

  while (row < rows && column >= 0) {

  if (target == matrix[row][column]) {

  /** 节点找到,向result加入节点元素 */

  result.add(new YoungTableau(row, column,

  matrix[row][column]));

  /** 如果找到,那么这行和这列都可以去掉 */

  column–;

  row++;

  } else if (target < matrix[row][column]) {

  /** 节点比基准点小,target所在列可以去除 */

  column–;

  } else {

  /** 节点比基准点大,target所在行可以去除 */

  row++;

  }

  }

  }

  /** 这里为了方便直接打印一下 */

  printResult(result);

  return result;

  }

  /**

  * @param source

  * @param rows

  * @param columns

  * 打印矩阵,调用的方法已经判空,此处省略

  */

  public static void printMatrix(int[][] matrix, int rows, int columns) {

  if (isValid(matrix, rows, columns)) {

  for (int i = 0; i < rows; i++) {

  for (int j = 0; j < columns; j++) {

  System.out.print(matrix[i][j] + “\t”);

  }

  System.out.println();

  }

  }

  }

  public void setRow(int row) {

  this.row = row;

  }

  public int getRow() {

  return row;

  }

  public void setColumn(int column) {

  this.column = column;

  }

  public int getColumn() {

  return column;

  }

  public void setValue(int value) {

  this.value = value;

  }

  public int getValue() {

  return value;

  }

  }

[1][2]

微风吹过,海面上金光闪闪,泛起一道道美丽的浪花,

杨氏矩阵查找元素位置Java实现

相关文章:

你感兴趣的文章:

标签云: