如果不小心网友来到了这里请网友自动飘走,浪费你们时间表示歉意。该系列博客的目的是:想作为自律工具和朋友一起每天刷几道题作为打卡督促的功能,没有什么可参考学习的东西,也不是刷博客量充大佬的目的
题号:207
//拓扑排序
var canFinish = function (numCourses, prerequisites) {
//记录numCourses这写课程每一阶段的前置可能(学习完了前置课程之后依赖它的课程的条件就减少一个,减少为0即可开始学习)
let array = new Array(numCourses).fill(0)
let queue = []//可供现阶段直接选择学习的课程,不依赖任何课程的课程
let map = new Map()//记录课程的依赖前置课程,某门课的前置必须课程
prerequisites.forEach((arr, idx) => {
let first = arr[0]
let second = arr[1]
if (map.has(second)) {
let courses = map.get(second)
courses.push(first)
map.set(second, courses)
} else {
let courses = [first]
map.set(second, courses)
}
array[first]++
});
array.forEach((item, idx) => {
if (item == 0) {
queue.push(idx)
}
});
if (map.size == 0) {
return true
}
if (queue.length == 0) {
return false
}
let learnCount = 0
while (queue.length != 0) {
learnCount++
let course = queue.shift()//学习这门课
let courses = map.get(course)
if (courses) {
for (let i = 0; i < courses.length; i++) {
let course = courses[i]
array[course]--
if (array[course] == 0) {
queue.push(course)
}
}
}
}
if (learnCount === numCourses) {
return true
}
return false
};
题号:189
//一次一个多次原地移动
var rotate = function (nums, k) {
let count = k % nums.length, begin = 0
while (count != 0) {
let last = nums[nums.length - 1]
let end = nums.length - 2
while (end >= 0) {
nums[end + 1] = nums[end]
end--
}
nums[0] = last
count--
}
};
题号:73
//笨思路,两次扫描
//第一次:扫描哪些要被设置为0,其中我用字母X代表这个地方的横竖也要置为0,用字母O表示接下来要置为0
//第二次:根据字母O的状态置换为0
var setZeroes = function (matrix) {
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == 0 || matrix[i][j] === 'X') {
//行
for (let k = 0; k < matrix[0].length; k++) {
if (matrix[i][k] == 0 || matrix[i][k] === 'X') {
matrix[i][k] = 'X'
} else {
matrix[i][k] = 'O'
}
}
//列
for (let k = 0; k < matrix.length; k++) {
if (matrix[k][j] == 0 || matrix[k][j] === 'X') {
matrix[k][j] = 'X'
} else {
matrix[k][j] = 'O'
}
}
matrix[i][j] = 'O'
}
}
}
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] === 'O') {
matrix[i][j] = 0
}
}
}
};