66. 加一
leetcode-cn.com/problems/pl…
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function (digits) {
for(let i=digits.length -1;i>-1;i--){
digits[i] = (digits[i] + 1) % 10
if(digits[i] !== 0){
return digits
}
}
digits = [...Array(digits.length + 1)].map(_=>0)
digits[0] = 1
return digits
};
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function (digits) {
let flag = 1
for (let i = digits.length - 1; i >= 0; i--) {
if (flag) {
const target = digits[i] + flag
if (target === 10) {
digits[i] = 0
}else{
digits[i] = target
flag --
return digits
}
}
}
if(flag) {
digits.unshift(flag)
}
return digits
};
815. 公交路线
leetcode-cn.com/problems/bu…
- bfs 扩散关联的车站
/**
* @param {number[][]} routes
* @param {number} S
* @param {number} T
* @return {number}
*/
var numBusesToDestination = function (routes, S, T) {
if (S === T) {
return 0
}
let minTime = 0
const stack = [S]
const visted = []
const relatedMap = {}
for (let i = 0; i < routes.length; i++) {
for (let j = 0; j < routes[i].length; j++) {
if (!relatedMap[routes[i][j]]) {
relatedMap[routes[i][j]] = new Set()
}
relatedMap[routes[i][j]].add(i)
}
}
// 扩散车站 而不是扩展路线
while (stack.length) {
minTime++
const size = stack.length
for (let i = 0; i < size; i++) {
const data = stack.shift()
if (data === T) {
return minTime
}
const relatedRoutes = relatedMap[data]
for (let nextRoutes of relatedRoutes) {
for (let nextStation of routes[nextRoutes]) {
if (nextStation === T) {
return minTime
}
if (!visted[nextStation]) {
visted[nextStation] = true
stack.push(nextStation)
}
}
}
}
}
return -1
};
- bfs 扩散关联的线路 超时
/**
* @param {number[][]} routes
* @param {number} S
* @param {number} T
* @return {number}
*/
var numBusesToDestination = function (routes, S, T) {
if(S===T){
return 0
}
let minTime = 0
const stack = []
const visted = []
for (let i = 0; i < routes.length; i++) {
for (let j = 0; j < routes[i].length; j++) {
if (routes[i][j] === S) {
if (routes[i].indexOf(T) >= 0) {
return 1
} else {
stack.push({ data: routes[i], index: i })
}
}
}
}
while (stack.length) {
minTime++
const size = stack.length
for (let i = 0; i < size; i++) {
const { data, index } = stack.shift()
if (data.indexOf(T) >= 0) {
return minTime
} else {
for (let m = 0; m < routes.length; m++) {
if (m !== index) {
if (isRelated(data, routes[m]) && !visted[m]) {
visted[m] = true
stack.push({ data: routes[m], index: m })
}
}
}
}
}
}
function isRelated(l1, l2) {
for (let i = 0; i < l1.length; i++) {
if (l2.indexOf(l1[i]) >= 0) {
return true
}
}
return false
}
return -1
};
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!