【每日一题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 )
目录
相关文章
|
7月前
【每日一题Day145】LC2383赢得比赛需要的最少训练时长 | 模拟
【每日一题Day145】LC2383赢得比赛需要的最少训练时长 | 模拟
50 0
|
7月前
【每日一题Day167】LC1000合并石头的最低成本 | 区间dp
【每日一题Day167】LC1000合并石头的最低成本 | 区间dp
55 1
【每日一题Day167】LC1000合并石头的最低成本 | 区间dp
|
7月前
|
SQL 算法 vr&ar
☆打卡算法☆LeetCode 181. 超过经理收入的员工 算法解析
☆打卡算法☆LeetCode 181. 超过经理收入的员工 算法解析
|
7月前
|
安全
【每日一题Day137】LC1599经营摩天轮的最大利润 | 模拟+贪心
【每日一题Day137】LC1599经营摩天轮的最大利润 | 模拟+贪心
68 0
|
7月前
【每日一题Day320】LC2651计算列车到站时间 | 数学
【每日一题Day320】LC2651计算列车到站时间 | 数学
45 0
|
7月前
【每日一题Day180】LC2409统计共同度过的日子数 | 模拟
【每日一题Day180】LC2409统计共同度过的日子数 | 模拟
45 0
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
238 0
|
数据建模
【美赛】2023年MCM问题Y:理解二手帆船价格(代码&思路)
【美赛】2023年MCM问题Y:理解二手帆船价格(代码&思路)
121 0
|
测试技术 C语言 C++
PTA团体程序设计天梯赛-练习集:L1-003 个位数统计
给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。 输入格式: 每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。 输出格式: 对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。
213 0
|
JavaScript
蓝桥模拟赛刷题之计算个人所得税
蓝桥第一次线上模拟赛的第三题,要让我们实现一个个人所得税计算功能,原生实现
126 1