![](https://img-blog.csdnimg.cn/20210913155153237.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode&算法
文章平均质量分 86
leetcode每日刷题
无枒
万物皆可embedding
展开
-
2023实习面经
实习面经原创 2023-02-20 11:06:36 · 704 阅读 · 1 评论 -
面试常见场景题智力题概率题
面试常问场景题,智力题,待补充原创 2022-08-30 12:40:51 · 560 阅读 · 0 评论 -
一文解决动态规划~详解
一文解决秋招所有动态规划题~原创 2022-07-20 11:02:33 · 212 阅读 · 0 评论 -
2023秋招算法岗(地狱难度)面经
2023NLP&RS秋招笔试面试记录。原创 2022-04-21 15:31:32 · 2102 阅读 · 4 评论 -
leetcode用堆解决topK问题
这里写自定义目录标题基本思路1.数组中的第K个最大元素2.数据中的最小K个数3.数据流的最大K个元素4.数组中两元素的最大乘积5.找到最大K个子序列6.最后一块石头的重量7.最长快乐字符串8.前K个高频单词9.数据流的中位数基本思路堆的题在python中可以用heapq库默认是最小堆堆排序的话最大堆:也叫大顶堆,堆顶最大,每个结点的值都大于或等于其左右孩子结点的值最小堆:也叫小顶堆,堆顶最小,每个结点的值都小于或等于其左右孩子结点的值适合类型的堆来进行排序升序----使用大顶堆降序----原创 2022-04-01 12:20:01 · 654 阅读 · 0 评论 -
leetcode括号匹配题思路
leetcode括号匹配题思路1.括号匹配栈1.任意*括号匹配栈1.括号有效长度2.括号匹配回溯1.括号匹配栈给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。自然的解法使用栈匹配如果当前是左括号,直接入栈,否则为有括号判断是否栈空,如果栈空则返回false,不然就看是否与栈顶匹配,匹配则出栈,最后判断栈是否为空,为空则匹配成功,否则有多余class Solut原创 2022-03-30 14:35:27 · 1018 阅读 · 0 评论 -
回溯题框架思路
回溯回溯法 采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:找到一个可能存在的正确的答案;在尝试了所有可能的分步方法后宣告该问题没有答案。深度优先搜索dfs是一种用于遍历或搜索树或图的算法。这个算法会 尽可能深 的搜索树的分支当结点 v 的所在边都己被探寻过原创 2022-03-16 17:41:23 · 515 阅读 · 1 评论 -
动态规划经典问题《背包问题》,弄懂这个你就懂了动态规划
背包九讲背包问题是动态规划问题中最为经典的问题之一,可以说完全弄明白了背包问题,能够很大程度上帮助我们了解动态规划转移方程的基本推导。背包问题的经典讲义为浙江大学崔添翼同学撰写的《背包九讲》,本文是我阅读该文章过程中的笔记和感想。动态规划的思路其实并不难想到,大多数问题只需要看一眼就能知道是否可以采用动规求解了,难点在于如何推导出合适的状态矩阵和状态转移方程。这需要我们多手写DP表,仔细找规律。动态规划问题基本概念动态规划方法要寻找符合“最优子结构“的状态和状态转移方程的定义,在找到之后,这个问题就原创 2021-11-08 18:49:12 · 5247 阅读 · 2 评论 -
2021-11-01-leetcode-链表SOTA操作
链表操作为什么单独把链表拎出来?因为最近刷题经常碰到链表,然后以前的知识以及写法老是忘记,就很烦,特此总结一下链表的一些SOTA操作,以及比较综合的一些题链表特性首先因为链表没法使用下标索引访问数据,因此搜索时间复杂度是On但是链表的插入以及修改操作的复杂度达到O1,因为不需要对其余的数据发生变动但也正因为这个特性,导致我们在很多题中必须要模拟解法,但是并不能保证解法的复杂度最低,因此我们总结出一些SOTA的写法来记忆。1. 找到链表的中间节点首先最简单的解法肯定是,先访问一遍所有节点,确认原创 2021-11-01 14:34:07 · 161 阅读 · 2 评论 -
2021-09-23-leetcode-真好的双指针
双指针的用途双指针法一般用于什么问题?首先,我们需要考虑是单向还是双向的。单向双指针:链表:找倒数第几个位置,或者找中间的位置数组:覆盖,交换,重新构造秩序,单向覆盖双向双指针:倒序,交换,快速排序(递归)有序数组的两个数之和,正负数有序的平方,也就是满足前后的双数查找单向双指针链表:找倒数第几个位置,或者找中间的位置数组:覆盖,交换,重新构造秩序,单向覆盖话不多说上例题1. 链表的中间节点给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,原创 2021-09-24 10:33:50 · 92 阅读 · 0 评论 -
2021-09-20-二分查找yyds
二分查找什么是二分查找?二分查找就是不断的找当前序列的中点,通过与二段性比较,如果满足,则解必然在另一半的序列中,将序列一分为二,在另一半中继续搜索,如此往复,因此每次减少一般的搜索空间,达到Ologn的时间复杂度。二段性二分查找最重要的就是必须拥有二段性,什么是二段性?必须序列的前一部分满足一个性质,后一部分不满足,因此我们可以通过二分查找找到两个性质转变的中间点。举个例子,在s=[1,2,3,4,5]中查找一个数字target=4,即我们可以发现在s中有二段性,一部分是大于target的一部分是原创 2021-09-20 20:44:30 · 417 阅读 · 0 评论 -
2021-09-17-栈和队列
栈和队列两个栈实现一个队列求解思路,使用两个栈来回倒—此处已经是优化后的我们设一个栈A和一个栈B如果是进队操作-------对进A栈如果是退队操作-------检查B栈,如果B中有元素,则B出栈,如果B中没有元素,则将A中元素倒入B中判断队列为空==两个栈都为空,返回-1class CQueue(object): def __init__(self): self.stack1=[] self.stack2=[] def appendTail原创 2021-09-17 14:27:26 · 85 阅读 · 0 评论 -
运行代码整个计算机会发生什么?
运行代码整个计算机会发生什么?首先我们以一个C语言程序为例子运行一个C/C++代码第一步:编译,优化(.c->.s,.asm)一个C/C++程序在点击运行的那一刻,首先这个程序经过预处理之后会被编译及优化,编译的过程设计到编译原理的相关知识,词法分析,语法分析,语义分析,中间代码生成,代码优化。将高级语言转换成等效的中间代码后者汇编程序代码。优化的话主要是对中间代码的优化,还有通过与机器的硬件结构相关而做出的一些优化,比如怎么充分利用机器的寄存器以及对内存的访问次数提高执行效率等等原创 2021-09-16 11:23:29 · 643 阅读 · 0 评论