
面试算法
文章平均质量分 84
常见面试算法题目汇总
振鹏Dong
天津理工大学22级软件工程学生董振鹏
展开
-
动态规划——高频典型题20道
DP能解决哪类问题?直观上,DP一般是让找最值的,例如最长公共子序列等等,但是最关键的是DP问题的子问题不是相互独立的,如果递归分解直接分解会导致重复计算指数级增长(想想前面的热身题)。DP最大的价值是为了消除冗余,加速计算。一般说来,动态规划题目有以下三种基本的类型:1.,例如求有多少种方式走到右下角,有多少种方式选出K个数使得***等等,而不关心具体路径是什么。2.等等,例如最大数字和、最长上升子序列长度、最长公共子序列、最长回文序列等等。3.,例如取石子游戏,先手是否必胜;原创 2025-04-11 13:52:31 · 592 阅读 · 0 评论 -
回溯——固定套路 | 面试算法12道
给我一种感觉是回溯需要画图思考是否需要剪枝。元素个数n相当于树的宽度(横向),而每个结果的元素个数k相当于树的深度(纵向)。枚举时,我们就是简单的暴力测试而已,一个个验证。模板如下。原创 2025-04-09 09:49:15 · 1203 阅读 · 0 评论 -
玄学贪心,但要掌握几道题目
贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法;贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。玄学贪心,但是掌握的几道题目!贪心常见的经典应用场景有如下这些,这些算法很多与图有关,本身比较复杂,也难以实现 ,我们一般掌握其思想即可:排序问题:选择排序、拓扑排序优先队列:堆排序赫夫曼压缩编码图里的Prim、Fruskal和Dijkstra算法硬币找零问题。原创 2025-04-08 16:05:22 · 996 阅读 · 0 评论 -
滑动窗口思想 面试算法高频题
滑动窗口思想其实就是快慢型的特例计算机网络中滑动窗口协议(Sliding Window Protocol),该协议是TCP实现流量控制等的核心策略之一。事实上在与流量控制、熔断、限流、超时等场景下都会首先从滑动窗口的角度来思考问题,例如hystrix、sentinel等框架都使用了这种思想。窗口其实就是两个变量left和right之间的元素,也可以理解为一个区间。窗口大小可能固定,也可能变化,如果是固定大小的,那么自然要先确定窗口是否越界,再执行逻辑处理。原创 2025-04-07 11:04:31 · 1232 阅读 · 0 评论 -
堆结构——面试算法题高频汇总
堆-数组中找k大、合并k个排序链表、数据流中位数......原创 2025-04-06 15:57:15 · 1014 阅读 · 0 评论 -
超大规模数据场景(思路)——面试高频算法题目
在海量数据中,此时普通的数组、链表、Hash、树等等结构有无效了 ,因为内存空间放不下了。而常规的递归、排序,回溯、贪心和动态规划等思想也无效了,因为执行都会超时,必须另外想办法。这类问题该如何下手呢?这里介绍三种非常典型的思路:位存储:使用位存储最大的好处是占用的空间是简单存整数的1/8。例如一个40亿的整数数组,如果用整数存储需要16GB左右的空间,而如果使用位存储,就可以用0.5GB的空间,这样很多问题就能够解决了。原创 2025-04-06 15:54:21 · 1107 阅读 · 0 评论 -
数字与数学——常见面试算法题
在算法中,一般只会选择各个学科的基础问题来考察,例如素数问题、幂、对数、阶乘、幂运算、初等数论、几何问题、组合数学等等。原创 2025-04-05 14:25:14 · 967 阅读 · 0 评论 -
字符串——面试考察高频算法题
给你一个字符串 s原创 2025-04-04 14:48:54 · 1003 阅读 · 0 评论 -
位运算——面试前不看不会!
机器数:机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1;一个数在计算机中的二进制表示形式,叫做这个数的机器数。真值:将带符号位的机器数对应的真正数值称为机器数的真值。原码:即用第一位表示符号,其余位表示值反码:正数的反码是其本身,而负数的反码是在其原码的基础上,符号位不变,其余各个位取反。能保持加和减运算的统一正数的补码就是其本身;负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1(即在反码的基础上+1)原创 2025-04-03 12:39:35 · 720 阅读 · 0 评论 -
二分查找与二叉树中序遍历——面试算法
始终保持nums1是较短的数组(减少边界处理)。递归或循环比较两个数组的k/2位置:排除较小元素的前半部分。更新k值(减去排除的数量)。处理边界(数组长度不足、k=1等)。通过不断排除不可能的部分,最终就能高效找到第k小的数啦!虽然细节有点多,但多举例子就能理解啦~ (๑•̀ㅂ•́)و✧。原创 2025-04-02 11:48:08 · 744 阅读 · 0 评论 -
快速排序与归并排序
快速排序里的递归过程本质上就是二叉树的前序递归调用是 :通过一个标记pivot元素将n个元素的序列划分为左右两个子序列left和right,其中left中的元素都比pivot小,right的都比pivot的大。这样处理完之后pivot就在一个固定的位置了。然后再次对pivot左右两侧递归执行快速排序。上述过程是递归执行的,在将所有子区间排好序之后,整个序列就有序了。快速排序的时间复杂度计算比较麻烦一些。原创 2025-04-02 12:26:14 · 378 阅读 · 0 评论 -
栈-常见考察面试算法题
栈,数据存储受限的线性表——插入和删除的操作只允许在一端进行。原创 2025-03-26 09:42:21 · 433 阅读 · 0 评论 -
链表高频面试题(思路纯享版!!)
链表高频面试题!梳理完后再也不担心链表合并、反转、删除区间啦!原创 2025-03-23 23:24:28 · 767 阅读 · 0 评论 -
反转链表!更是高频常见!
反转链表涉及到结点的增加、删除等多种操作,能够非常有效的考察思维能力与代码驾驭能力。很多题目都用其为基础。原创 2025-03-24 22:16:41 · 235 阅读 · 0 评论 -
数组&双指针———解决常见面试算法
给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。首先对整个数组实行翻转,例如 [1,2,3,4,5,6,7] 我们先将其整体翻转成[7,6,5,4,3,2,1]。最后将两个再次翻转就得到[5,6,7] 和[1,2,3,4],最终结果就是[5,6,7,1,2,3,4]数组中表示的数据可能是连续的,也可能是不连续的,如果将连续的空间标记成一个区间,就是新题目。原创 2025-03-26 00:23:17 · 832 阅读 · 0 评论 -
递归与非递归实现二叉树遍历
迭代方案实现二叉树的前中后序遍历。原创 2025-03-30 22:56:29 · 146 阅读 · 0 评论 -
二叉树的深度优先经典问题——面试高频
二叉树的深度优先 面试经典问题原创 2025-03-31 22:18:50 · 409 阅读 · 0 评论 -
树——构造和遍历问题——面试专题
重点研究二叉树相关的算法题目,主要是层次遍历和深度优先遍历方面的问题。原创 2025-03-28 15:45:40 · 1093 阅读 · 0 评论 -
哈希和队列 互相实现 | n数之和 | 手撕LRU
哈哈,不知不觉今天就要结束了。本来想着梳理下关于AVL、红黑树方面的知识,感觉那些需要挺长时间啃的,不管了。来看看哈希与队列在面试算法中的高频考点。原创 2025-03-28 00:49:37 · 1034 阅读 · 0 评论