如果不小心网友来到了这里请网友自动飘走,浪费你们时间表示歉意。该系列博客的目的是:想作为自律工具和朋友一起每天刷几道题作为打卡督促的功能,没有什么可参考学习的东西,也不是刷博客量充大佬的目的
题号:130
var solve = function (board) {
let helper = (i, j) => {
if (i < 0 || i >= board.length || j < 0 || j >= board[0].length) {
//数组越界,不合法数据
return
}
if (board[i][j] === 'X' || board[i][j] == -1) {
return
}
//记录已经访问过
board[i][j] = -1
//开始向四周检查
helper(i, j - 1)
helper(i - 1, j)
helper(i, j + 1)
helper(i + 1, j)
}
for (let i = 0; i < board.length; i++) {
for (let j = 0; j < board[0].length; j++) {
if ((i == 0) || (j == 0) || (i == board.length - 1) || (j == board[0].length - 1)) {
//四周边界
if (board[i][j] === 'O') {
helper(i, j)
}
}
}
}
for (let i = 0; i < board.length; i++) {
for (let j = 0; j < board[0].length; j++) {
if (board[i][j] == -1) {
board[i][j] = 'O'
} else {
board[i][j] = 'X'
}
}
}
};
题号:240
//数据是有规律的的找一个好的搜索点可以减枝调很多数据
//根据数据规律斜着比较
var searchMatrix = function (matrix, target) {
let i = 0, j = matrix[0].length - 1
while (i < matrix.length && j >= 0) {
if (matrix[i][j] > target) {
j--
} else if (matrix[i][j] < target) {
i++
} else {
return true
}
}
return false
};
题号:371
//第一次刷没想到这么解,需要二刷
//此题主要是观察常规位运算结果的规律,利用规律来模拟运算
var getSum = function (a, b) {
while (b != 0) {
//异或运算:相同为1,不同为0
//得到结果为不带进位的结果
let temp = a ^ b
//与运算:一个为1就为1
//得到可能的各个进位的值(不一定有一个位置可以进位)
//左移1就是加到下一个位置上
b = (a & b) << 1
a = temp
}
return a
};