![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode/牛客 编程训练
文章平均质量分 52
专攻大厂面试/研究生机试
AndyZzz~
这个作者很懒,什么都没留下…
展开
-
斐波那契数列 | 矩阵加速
AcWing上有这样的一道题,不会很难,但是我觉得来练习编码能力还是非常有意义!这道题深挖,可以挖掘出快速幂算法、模运算、面向对象基础、运算符重载,以及编码规范和鲁棒性的高层观点。这或许就是在实习之后的收获,现在编码更加关注鲁棒性、边界条件和可读性。以后刷题还是要搞起来!题目链接因为数据规模较大,因此普通的斐波那契算法根本无法在令人满意的时间内求算出答案。因此,可以利用矩阵快速幂来加速运算,这是因为有:参考代码(已有注释):/* * 矩阵快速幂 * Created by Jiananyuan原创 2021-09-05 21:23:02 · 223 阅读 · 0 评论 -
滑动窗口 题解
原题见力扣:https://leetcode-cn.com/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/这里讲的滑动窗口并不是计网TCP中的滑动窗口. 不过移动的方式其实差不多,就是在一串数据上以固定大小的窗口滑动,每次都在该窗口内寻找最大值. 这与深度学习中的max_pooling1D思想神似. (stride=1, kernel=k) 这题用暴力解法当然十分简单,时间复杂度为O(kN),但本题的要领并不在此.class Solution {pub原创 2021-02-19 14:43:33 · 616 阅读 · 0 评论 -
【编程训练-2】链表判断有环、找链表交汇点、找链表入环点
判断链表是否有环,是个基础性的问题。一般大多数人能想到的是空间复杂度为O(N)的解法,开一个HashSet记录是否被mark过;再劣一点的,可能就时间复杂度为O(N²)的蛮力解法。我们需要一个空间复杂度为O(1),时间复杂度为O(N)的解法,可以用双指针实现。双指针,一定要在碰到链表类算法题的时候,想起它一下,对你有益!链接:判断链表中是否有环单链表如果有环,则只可能是下面情况:下面这种情况是不存在的(由单链表的定义可以知道)这样,双指针代码就好写了:class Solution {pu.原创 2021-01-02 20:27:21 · 128 阅读 · 0 评论 -
【编程训练-1】反转链表
反转链表这道题不会很难,但今年都是多家公司的面试题,这里简单做一下分析和解答。题目链接:反转链表_牛客网来看一个示意图:p最初的位置在链表头,反转链表的工作,说起来很简单,就是将上面蓝色的箭头都反一下就可以了,这样来说,理论上的时间复杂度可以达到线性,也即O(N)。如何反转?照下面两步来:p初始化为链表头,q置为链表头下一个(如果有的话),链表头的next指针置nullq的next指针置为pp,q同步向前移动鲁棒性也是需要考虑的,如果链表为空,也要保证我们的代码能工作。参考代码:.原创 2021-01-02 19:36:51 · 117 阅读 · 0 评论