【每日一题Day96】LC2303计算应缴税款总额 | 模拟

简介: 若income<=bracket[0],那么表示income遇到上限值,该段金额产生的税率为(income−pre)∗bracket[1]/100

计算应缴税款总额【LC2303】


You are given a 0-indexed 2D integer array brackets where brackets[i] = [upperi, percenti] means that the ith tax bracket has an upper bound of upperi and is taxed at a rate of percenti. The brackets are sorted by upper bound (i.e. upperi-1 < upperi for 0 < i < brackets.length).


Tax is calculated as follows:


  • The first upper0 dollars earned are taxed at a rate of percent0.
  • The next upper1 - upper0 dollars earned are taxed at a rate of percent1.
  • The next upper2 - upper1 dollars earned are taxed at a rate of percent2.
  • And so on.


You are given an integer income representing the amount of money you earned. Return the amount of money that you have to pay in taxes. Answers within 10-5 of the actual answer will be accepted.


想每天九点起床

I guess Peter Pan was right


Growing up’s a waste of time


So I think I’ll fly away


Set a course for brighter days


  • 思路:直接遍历税率数组直到income遇到上限值,梯度计算税额,使用变量记录前一档税额的上限值pre


。若income<=bracket[0],那么表示income遇到上限值,该段金额产生的税率为(income−pre)∗bracket[1]/100


。若income>bracket[0],那么表示该段金额产生的上限为税率为bracket[0],(bracket[0]−pre)∗bracket[1]/100


  • 实现


class Solution {
    public double calculateTax(int[][] brackets, int income) {
        double res = 0;
        int n = brackets.length;
        int pre = 0;
        for (int[] bracket : brackets){
            if (income <= bracket[0]) {
                res += (income - pre) * bracket[1] / 100.0;
                break;
            }else {
                res += (bracket[0] - pre) * bracket[1] / 100.0;
                pre = bracket[0];
            }
        }
        return res;
    }
}


。复杂度


  • 时间复杂度:O ( n )
  • 空间复杂度:O ( 1 )
目录
相关文章
|
2月前
【每日一题Day334】LC2591将钱分给最多的儿童 | 贪心
【每日一题Day334】LC2591将钱分给最多的儿童 | 贪心
27 0
|
5天前
|
Python
心得经验总结:期权定价的BS公式
心得经验总结:期权定价的BS公式
10 0
|
2月前
【每日一题Day145】LC2383赢得比赛需要的最少训练时长 | 模拟
【每日一题Day145】LC2383赢得比赛需要的最少训练时长 | 模拟
32 0
|
2月前
|
安全
【每日一题Day137】LC1599经营摩天轮的最大利润 | 模拟+贪心
【每日一题Day137】LC1599经营摩天轮的最大利润 | 模拟+贪心
46 0
|
2月前
【每日一题Day180】LC2409统计共同度过的日子数 | 模拟
【每日一题Day180】LC2409统计共同度过的日子数 | 模拟
26 0
|
2月前
【每日一题Day320】LC2651计算列车到站时间 | 数学
【每日一题Day320】LC2651计算列车到站时间 | 数学
25 0
|
2月前
|
Java Android开发
Java实现月工资个人所得税及各保险计算问题
Java实现月工资个人所得税及各保险计算问题
55 0
|
12月前
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
204 0
|
12月前
|
数据建模
【美赛】2023年MCM问题Y:理解二手帆船价格(代码&思路)
【美赛】2023年MCM问题Y:理解二手帆船价格(代码&思路)
【每日一题Day1】LC1700.无法吃午餐的学生数量
给你两个整数数组 students 和 sandwiches ,其中 sandwiches[i] 是栈里面第 i 个三明治的类型(i = 0 是栈的顶部), students[j] 是初始队列里第 j 名学生对三明治的喜好(j = 0 是队列的最开始位置)。请你返回无法吃午餐的学生数量。
53 0