• 算法补天系列之——中级提高班-2(树的递归,动态规划,调整遍历方向减少复杂度)


    今天的题:

    在这里插入图片描述

    这个题目很好办,我们直接用哈希表就可以了。
    我们统计处理一下,然后再遍历一次,+2之后去找这个数值有没有就行了。
    巨™简单

    好了,我们热完身了,下一道题:

    在这里插入图片描述

    这道题可以说是非常业务的题目了。
    这里可以简单说一下,互联网公司的笔试题目可以分两类,业务为主(55%)和技巧为主(45%)

    这道题很明显就是只能从大平均的集合那数据去小平均的集合。并且拿的应该是小平均到大平均之间的数据。并且应该是从小往大的去拿,这样可以使得magic的次数尽量多。
    需要注意的是,我们的平均值是变的,所以我们要在选择的时候care一下。

    再来一个括号字符串的题目吧:

    在这里插入图片描述

    这个题目,看一下就懂了,超级简单,就是之前那个匹配的变量的最大值。好弱啊是吧。
    (这个好像之前说到过,不过看这里没有,我就简单提一下,就是说定义一个变量=0,左括号的话++,右括号的话–,不能为负)

    我们来补充一下:

    找其中最长的有效括号子串。
    这道题目,之前在LeetCode中也有过,当时的每日一题好像还是。
    这个题目我当时是用的栈解决的。找到了所有的可以匹配的括号,统计最长的连续可匹配的括号。
    不过也可以用dp来解决问题,我们用dp[i]表示以i为结尾符号,看最长的有效长度。
    首先我们要看这个字符本身,左括号直接over,做0,然后看i-1位置,我们知道i-1位置往前的合法的括号串的长度,我们在这个括号串之前的那个字符去比较。如果没匹配上,那就over了,没有匹配上的,如果匹配上了,那就至少是i-1那个串+2,。
    为什么是至少?
    因为在这个字符前面,可能还有一段合法的。我们要记得把这个部分加上去
    在这里插入图片描述

    并且这样的机制,可以保证不循环遍历。

    你们玩思路的心都脏,我们来看一个纯coding的问题(滑稽)

    在这里插入图片描述

    这个很简单,我们一定要保证辅助栈是从小(栈顶)到大(栈底)的,如果不满足,就弹回到那个栈里面,最后直到辅助栈慢了,应该也就是单调栈了,然后返回给原来的栈,就满足要求了,这个自己画一下应该就懂了,很好理解。

    我们再看看这个:

    在这里插入图片描述

    这个是一个经典的从左往右的尝试模型
    在这里插入图片描述

    其实相对而言也是比较简单的。
    递归其实是比较好想的,要改动态规划的话,因为这个递归参数是一维的,也比较好改。

    这个是二叉树递归套路的老题了,什么路径,贪心都可以用这个递归套路做。

    在这里插入图片描述

    正所谓是温故知新,我们正好回来复习一下,虽然这个二叉树递归我真不知道还能说啥了,就是向左右子树要他们根节点到叶子结点的最大权值和,然后加上自己的根节点。

    这里唯一的一个要注意的点,就是他要到的是叶节点,所以递归的跳出条件要注意

    最后再来两道题

    在这里插入图片描述

    这个题的经典思路:从右上角去找,这个数如果大于他,因为知道下面的一定大,往左走,如果小于他,就知道左边的一定小于他,往下走。
    这个思路看完就能明白,我们的复杂度是m+n级别的,比遍历的m*n好多了

    回家题

    在一个二维数组中,每一行中,0一定在1的左边,可以只有0或者1.返回含有1数量最多的行
    在这里插入图片描述

    如果,我们之前没有说前面那个题目,可能大家真的就遍历去做了,不过这道题确实可以和上一个走一样的路径,从右上去左下。是1左走,是0下移。走到越界就行。

    发现了吗,其实题是没数的,但是模型和思路是有数的。

  • 相关阅读:
    如何更改代理ip,变更代理ip怎么实现?
    07-Zookeeper分布式一致性协议ZAB源码剖析
    短视频视频制作矩阵剪辑系统---源码,源代码独立搭建
    Requests 与接口请求构造
    2022-08-10-w03d03-w03d04-w03d05
    Vim 学习笔记
    NestJS学习:控制器
    Paket在Linux下使用问题
    使用.Net对图片进行裁剪、缩放、与加水印
    Windows环境变量 和 Linux环境变量
  • 原文地址:https://blog.csdn.net/weixin_51529433/article/details/126200051