【LeetCode系列】——编程能力提升(1)

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。【LeetCode系列】——编程能力提升(1),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

题目链接:
T1:1523. 在区间范围内统计奇数数目
T2:1491. 去掉最低工资和最高工资后的工资平均值

🍀基本数据类型

T1:在区间范围内统计奇数数目

📚题目详情

给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。

示例 1:

输入:low = 3, high = 7
输出:3
解释:3 到 7 之间奇数数字为 [3,5,7] 。

示例 2:

输入:low = 8, high = 10
输出:1
解释:8 到 10 之间奇数数字为 [9] 。

提示:

0 <= low <= high <= 10^9
💡解题思路

方法:前缀和思想
思路与算法

如果我们暴力枚举 [low,high] 中的所有元素会超出时间限制。

class Solution {
    public int countOdds(int low, int high) {
        int sum=0;
        for(int i=low;i<=high;i++){
            if(i%2!=0){
                sum++;
            }
        }
        return sum;
    }
}

在这里插入图片描述

我们可以使用前缀和思想来解决这个问题,定义pre(x) 为区间 [0,x] 中奇数的个数,很显然:
pre(x)=⌊ 2x+1​⌋

故答案为pre(high)−pre(low−1)

🔑源代码
class Solution {
    public int countOdds(int low, int high) {
        return pre(high)-pre(low-1);
    }
    public int pre(int x){
        return (x+1) >> 1;//利用位运算,相当于(x+1)/2的整形
    }
}

T2:去掉最低工资和最高工资后的工资平均值

📚题目详情

给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。

示例 1:

输入:salary = [4000,3000,1000,2000]
输出:2500.00000
解释:最低工资和最高工资分别是 1000 和 4000 。
去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500

示例 2:

输入:salary = [1000,2000,3000]
输出:2000.00000
解释:最低工资和最高工资分别是 1000 和 3000 。
去掉最低工资和最高工资以后的平均工资是 (2000)/1= 2000

示例 3:

输入:salary = [6000,5000,4000,3000,2000,1000]
输出:3500.00000

示例 4:

输入:salary = [8000,9000,2000,3000,6000,1000]
输出:4750.00000

提示:

3 <= salary.length <= 100
10^3 <= salary[i] <= 10^6
salary[i] 是唯一的。
与真实值误差在 10^-5 以内的结果都将视为正确答案。
💡解题思路

先对数组salary进行从小到大排序,可以直接利用Arrays类的sort方法,去掉最小值和最大值即将第一个元素和最后一个元素直接的元素相加,再除以数组长度减2。

🔑源代码
class Solution {
    public double average(int[] salary) {
        Arrays.sort(salary);
        double sum=0;
        for(int i=1;i<salary.length-1;i++){
            sum += salary[i];
        }
        return sum/(salary.length-2);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/199757.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!