day04-待补充-169/1491/1523

32 阅读2分钟

第一题

题目

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

思路

分为三种情况

1、low和high都是奇数的情况,结果等于(high-low)/2 + 1

2、low和hign都是偶数的情况,(high-low)/2

3、low和hign一奇一偶的情况,(high-low)/2 + 1

可以额外注意一下low和high相等的情况,但是会发现low和high相等的情况,符合(high-low)/2 + 1,所以代码只要额外提出来(high-low)/2的情况,剩余else就可以了。

代码

    public int countOdds(int low, int high) {
        int num = high -low;
        int res = num/2;
        if(num % 2 == 0 && high%2 == 0) {
            return res;
        }else {
            res++;
        }
        return res;
    }

第二题

题目

给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。

请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值

思路

遍历,取出最大值,最小值,然后进行计算,这里注意一下,sum/n,要先转换为double再进行计算,否则,会自动为int类型

代码

    public double average(int[] salary) {
        int minPri = salary[0];
        int maxPri = salary[0];

        int sum = 0;
        for(int i = 0; i < salary.length; i++) {
            sum+=salary[i];
            if(salary[i] < minPri) {
                minPri = salary[i];
            }else if(salary[i] > maxPri) {
                maxPri = salary[i];
            }
        }
        sum = sum - minPri - maxPri;
        double res = (double)((double)sum/(double)(salary.length - 2));
        return res;
    }

第三题

题目

给定一个大小为 n **的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素

思路

排序,然后遍历查找,当然,第一印象是使用哈希,本次使用排序,哈希有时间补充

代码

    public int majorityElement(int[] nums) {
        if(nums.length == 1) {return nums[0];};
        Arrays.sort(nums);
        int res = nums[0];
        int resCopy = nums[0];
        int time = 0;
        int timeCopy = 0;
        for(int i = 0; i < nums.length; i++) {
            if(i == nums.length -1 && resCopy == nums[i-1]) {
                timeCopy++;
            }
            if(timeCopy > time) {
                time = timeCopy;
                res = nums[i-1];
            };
            if(resCopy == nums[i]) {
                timeCopy++;
            }else {
                timeCopy = 1;
            };
            resCopy = nums[i];
        };
        return res;
    }