044 Figure Under Gravity

在这里插入图片描述
Python Version:

def figureEnderGravity(matrix):
    if not matrix or not matrix[0]:
        return matrix
    m, n = len(matrix), len(matrix[0])
    minstep = sys.maxsize
    for j in range(n):
        i = 0
        while i < m:
            while i < m and matrix[i][j] != 'F':
                i += 1
            if i == m:
                continue
            while i < m and matrix[i][j] == 'F':
                i += 1
            if i < m:
                cnt = 0
                while i < m and matrix[i][j] != '#':
                    i += 1
                    cnt += 1
                minstep = min(minstep, cnt)
    if minstep == sys.maxsize or minstep == 0:
        return matrix

    for i in range(m-1, minstep-1, -1):
        for j in range(n):
            if matrix[i-minstep][j] == 'F':
                matrix[i][j] = 'F'
                matrix[i-minstep][j] = '.'

    return matrix

Java version

public char[][] figureUnderGravity(char[][] matrix) {
  if (matrix == null || matrix.lenght == 0 || matrix[0].length == 0) {
    return matrix;
  }
  int m = matrix.length;
  int n = matrix[0].length;
  int minstep = Integer.MAX_VALUE;
  for (int j = 0; j < n; j++) {
    int i = 0;
    while (i < m) {
      while (i < m && matrix[i][j] != 'F') {
        i++;
      }
      if (i == m) continue;
      while (i < m && matrix[i][j] == 'F') {
        i++;
      }
      if (i < m) {
        int cnt = 0;
        while (i < m && matrix[i][j] != '#') {
          i++;
          cnt++;
        }
        minstep = Math.min(minstep, cnt);
      }
    }
  }
  if (minstep == Integer.MAX_VALUE || minstep == 0) {
    return matrix;
  }
  for (int i = m - 1; i < minstep; i--) {
    for (int j = 0; j < n; j++) {
      if (matrix[i - minstep][j] == 'F') {
        matrix[i][j] = 'F';
        matrix[i - minstep][j] = '.';
      }
    }
  }
  reutrn matrix;
}
posted @ 2020-10-09 02:40  EvanMeetTheWorld  阅读(18)  评论(0)    收藏  举报