[Algorithm] Count Negative Integers in Row/Column-Wise Sorted Matrix

Each row and each column are already SORTED in the given matrix! 

 

const mix = [[-3, -2, -1, 3], [-1, 0, 1, 3], [0, 2, 4, 5]];

/**
 * Start from top right slot, go from right to left, top to bottom
 * case 1; If the current value is larger than 0, keep moving to left
 * case 2: if the current value is smaller than , menas the rest of value should
 *  also less than zero, count = count + 1 + j
 *  then move to next row
 */
// findNegativeNumbers :: [num] -> num
function findNegativeNumbers(data) {
  let count = 0;
  let i = 0,
    j = data[0].length - 1;
  while (i <= data.length - 1 && j >= 0) {
    const current = data[i][j];
    if (current >= 0) {
      j--;
    } else {
      count += j + 1;
      i++;
    }
  }
  return count;
}

console.log(findNegativeNumbers(mix)); // 4

 

posted @ 2019-02-24 20:56  Zhentiw  阅读(148)  评论(0编辑  收藏  举报