leetCode

题目编号:20
有效的括号

解法

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
  if(s === '') return true;
  var stack = [];
  var arr = s.split('');
  arr.forEach(function (item) {
    // 当前栈顶部元素
    var stackTop = stack[stack.length - 1];
    if ((stackTop === '(' && item === ')') || (stackTop === '{' && item === '}') || (stackTop === '[' && item === ']')) {
      stack.pop();
    } else {
      stack.push(item);
    }
  });
  return stack.length === 0;
};

深度优先搜索算法

leetCode

题目编号:200
岛屿数量

解法

/**
 * @param {character[][]} grid
 * @return {number}
 */
const numIslands = (grid) => {
  let count = 0
  for (let i = 0; i < grid.length; i++) {
    for (let j = 0; j < grid[0].length; j++) {
      if (grid[i][j] === '1') {
        count++
        turnZero(i, j, grid)
      }
    }
  }
  return count
}
function turnZero(i, j, grid) {
  if (i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] === '0') return
  grid[i][j] = '0'
  turnZero(i, j + 1, grid)
  turnZero(i, j - 1, grid)
  turnZero(i + 1, j, grid)
  turnZero(i - 1, j, grid)
}