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