冲刺大厂每日算法&面试题,动态规划21天——第二十一天

Posted 肥学

tags:

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

导读

肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。我们先来搞一下让大家最头疼的一类算法题,动态规划我们将进行为时21天的养成计划。还在等什么快来一起肥学进行动态规划21天挑战吧!!

特别介绍

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

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

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

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

21天动态规划入门

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。

示例 1:

输入: 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1
示例 2:

输入: 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。
说明: 你可以假设 n 不小于 2 且不大于 58
class Solution 
    public int integerBreak(int n) 
        int[] dp = new int[n + 1];
        for (int i = 2; i <= n; i++) 
            int curMax = 0;
            for (int j = 1; j < i; j++) 
                curMax = Math.max(curMax, Math.max(j * (i - j), j * dp[i - j]));
            
            dp[i] = curMax;
        
        return dp[n];
    


给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和
11 不是。

示例 1:

输入:n = 12
输出:3 
解释:12 = 4 + 4 + 4
示例 2:

输入:n = 13
输出:2
解释:13 = 4 + 9
class Solution 
public:
    int numSquares(int n) 
        vector<int> f(n + 1);
        for (int i = 1; i <= n; i++) 
            int minn = INT_MAX;
            for (int j = 1; j * j <= i; j++) 
                minn = min(minn, f[i - j * j]);
            
            f[i] = minn + 1;
        
        return f[n];
    
;

面试题

2021 【美团】面试真题:
9、Spring AOP 底层原理 aop 底层是采用动态代理机制实现的:接口+实现类 
如果要代理的对象,实现了某个接口,那么 Spring AOP 会使用 JDK Proxy,去创建代 理对象。 
没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候 Spring AOP 会 使用 Cglib
生成一个被代理对象的子类来作为代理。 就是由代理创建出一个和 impl 实现类平级的一个对象,但是这个对象不是一个真正的对象,
只是一个代理对象,但它可以实现和 impl 相同的功能,这个就是 aop 的横向机制原理,这 样就不需要修改源代码。

10、HashMap 的底层数据结构是怎样的 ? JDK1.8 之前  JDK1.8 之前 HashMap 底层是 数组和链表
结合在一起使用也就是 链表散列。  HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过
(n - 1) & hash 判断当前元素存放的位置(这里的 n 指的是数组的长度),如果当前位置存在
元素的话,就判断该元素与要存入的元素的 hash 值以及 key 是否相同,如果相同的话, 直接覆盖,不相同就通过拉链法解决冲突。 
所谓扰动函数指的就是 HashMap 的 hash 方法。使用 hash 方法也就是扰动函数是为了 防止一些实现比较差的
hashCode() 方法 换句话说使用扰动函数之后可以减少碰撞。 JDK1.8 之后 23 当链表长度大于阈值(默认为 8)时,会首先调用
treeifyBin()方法。这个方法会根据 HashMap 数组来决定是否转换为红黑树。只有当数组长度大于或者等于 64 的情况下,才会
执行转换红黑树操作,以减少搜索时间。否则,就是只是执行 resize() 方法对数组扩容

点击直接资料领取

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

以上是关于冲刺大厂每日算法&面试题,动态规划21天——第二十一天的主要内容,如果未能解决你的问题,请参考以下文章

冲刺大厂每日算法&面试题,动态规划21天——第六天

冲刺大厂每日算法&面试题,动态规划21天——第九天

冲刺大厂每日算法&面试题,动态规划21天——第十天

冲刺大厂每日算法&面试题,动态规划21天——第五天

冲刺大厂每日算法&面试题,动态规划21天——第八天

冲刺大厂每日算法&面试题,动态规划21天——第三天