1. 题目
2. 思路
分成三种情况:income 为0,没有收入不用纳税;income大于等于当前的upper,那就按照规则缴纳;income小于当前upper,那就用income和当前upper的差距来计算。
3. 实现
/**
* @param {number[][]} brackets
* @param {number} income
* @return {number}
*/
var calculateTax = function(brackets, income) {
let res = 0
const n = brackets.length
for (let i = 0; i < n; i++) {
let upper = brackets[i][0], percent = brackets[i][1] / 100
// console.log(upper, percent);
if (income === 0) return res // 没有收入,不用叫纳税
else if (income >= upper) {
// 收入大于等于upper
if (i === 0) {
if (percent === 0) res += 0
else {
// console.log('debug1', i);
// console.log(upper * percent);
res += upper * percent
}
} else {
// console.log('debug2', i);
// console.log((upper - brackets[i - 1][0]) * percent);
res += (upper - brackets[i - 1][0]) * percent
}
} else {
// 收入小于upper
if (brackets[i - 1]) {
// console.log('debug3', i);
// console.log((upper - brackets[i - 1][0]) * percent);
res += (income - brackets[i - 1][0]) * percent
} else {
res += income * percent
}
return res
}
}
return res
};