每日算法&面试题,大厂特训二十八天——第二十三天(树)

Posted 肥学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日算法&面试题,大厂特训二十八天——第二十三天(树)相关的知识,希望对你有一定的参考价值。

目录标题

导读

肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。上一期我们完成了动态规划二十一天现在我们进行下一项对各类算法进行二十八天的一个小总结。还在等什么快来一起肥学进行二十八天挑战吧!!

特别介绍

📣小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶

📣python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章,可以让你快乐学python练手项目专栏

📣另外想学JavaWeb进厂的同学可以看看这个专栏:传送们

📣这是个冲刺大厂面试专栏还有算法比赛练习我们一起加油 上岸之路

算法特训二十八天

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

示例 1:

输入:low = 3, high = 7
输出:3
解释:37 之间奇数数字为 [3,5,7]
示例 2:

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

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

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

\\rm pre(x) = \\lfloor \\fracx + 12 \\rfloor pre(x)=⌊ 2 x+1 ​ ⌋

故答案为 \\rm pre(high) - pre(low - 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;
    



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

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

示例 1:

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

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

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

输入:salary = [8000,9000,2000,3000,6000,1000]
输出:4750.00000
class Solution 
    public double average(int[] salary) 
        double sum = 0;
        double maxValue = Integer.MIN_VALUE, minValue = Integer.MAX_VALUE;
        for (int num : salary) 
            sum += num;
            maxValue = Math.max(maxValue, num);
            minValue = Math.min(minValue, num);
        
        return (sum - maxValue - minValue) / (salary.length - 2);
    



面试题

线程池有哪几种创建方式?
Java 通过 Executors(jdk1.5 并发包)提供四种线程池,分别为:
 newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵
活回收空闲线程,若无可回收,则新建线程。
 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队
列中等待。
 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
 newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执
行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。


线程池参数有哪些?
 corePoolSize 核心线程大小。
 maximumPoolSize 线程池最大线程数量。
 keepAliveTime 空闲线程存活时间。
 unit 空间线程存活时间单位。
 workQueue 工作队列。
 threadFactory 线程工厂。
 handler

适合面试和比赛的算法目录:链接

点击直接资料领取

这里有python,Java学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。反正看看也不亏。

以上是关于每日算法&面试题,大厂特训二十八天——第二十三天(树)的主要内容,如果未能解决你的问题,请参考以下文章

每日算法&面试题,大厂特训二十八天——第二十七天(函数)

每日算法&面试题,大厂特训二十八天——第二十三天(树)

每日算法&面试题,大厂特训二十八天——第二十六天(循环)

每日算法&面试题,大厂特训二十八天——第二十天(树)

每日算法&面试题,大厂特训二十八天——第二十五天(条件语句)

每日算法&面试题,大厂特训二十八天——第八天(递归|回溯)