每日刷题
每日整理大数据面试题、算法题与SQL题
273大数据
261算法
235SQL
2026-06-18 周四
💻50 题
💻 算法 · 50题
面试官:你都工作3年了,这个算法题都不会?
金三银四,又到了换工作的最佳时机,我幻想着只要跳个槽,就能离开这个”鸟地方“,拿着更多的钱,干着最爽的事...结果被一道算法题坑了,"有效的括号"使用栈来解,会非常简单.
前端笔试&面试爬坑系列---算法
终于来了,算法相关的。 其实个人理解,前端岗位对于算法的要求与其他IT岗位相比,是低得多的。 但是小白我经历了如蚂蚁金服、网易这样的大厂教做人之后,还是觉得,对于一些基本算法、思想的掌握还是必须的。 然后,就把自己遇到的、学到的算法相关的再总结一下,方便自己随时备战面试。 JS…
【前端词典】有趣的大厂算法面试题
看到一篇算法文章,觉得着实有趣,但不知为何我看到题后首先想到的是田忌赛马。今天我也试着解释下这题,当做是一个学习的过程。 64 匹马分 8 次在全部比完一次,然后我们可以把目标缩小到 32 匹马。 1、八次比完后,我们可以将每一匹马的速度按下表排好。 剩下的 8 组 32 匹马…
面试遇到了算法题?看这篇就够啦。
链表即是由节点(Node)组成的线性集合,每个节点可以利用指针指向其他节点。它是一种包含了多个节点的、能够用于表示序列的数据结构。 单向链表: 链表中的节点仅指向下一个节点,并且最后一个节点指向空。 双向链表: 其中每个节点具有两个指针 p、n,使得 p 指向先前节点并且 n …
👨💻面试官:工作两年了,这么简单的算法题你都不会?
回想以前遇到过的面试官,甚至包括自己作为面试官的时候,大都是停留在问【是什么】的问题上,而很少去追问【为什么】。。。
面试必备:八种排序算法原理及Java实现
1. 概述 排序算法分为内部排序和外部排序,内部排序把数据记录放在内存中进行排序,而外部排序因排序的数据量大,内存不能一次容纳全部的排序记录,所以在排序过程中需要访问外存。 经常提及的八大排序算法指的就是内部排序的八种算法,分别是冒泡排序、快速排序、直接插入排序、希尔排序、简单…
常见的js算法面试题收集,es6实现
持续更新,持续更新...
2024前端高频面试题之-- 数据结构与算法篇
【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 2024前端高频面试题
[算法总结] 13 道题搞定 BAT 面试——字符串
1. KMP 算法 谈到字符串问题,不得不提的就是 KMP 算法,它是用来解决字符串查找的问题,可以在一个字符串(S)中查找一个子串(W)出现的位置。KMP 算法把字符匹配的时间复杂度缩小到 O(m+n) ,而空间复杂度也只有O(m)。因为“暴力搜索”的方法会反复回溯主串,导致…
前端面试遇到的算法题
尽可能的全面正确的解析一个任意 url 的所有参数为 Object,注意边界条件的处理。 请使用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中,并返回第一次出现的位置(找不到返回 -1)。 有一个祖先树状 json 对象,当一个人有一个儿子的时候,其 child …
[算法总结] 20 道题搞定 BAT 面试——二叉树
0. 几个概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密哈~~~ 满二叉树:除最后一层外,每一层上的所有节点都有两个子节点,最后一层都是叶子…
【算法面试】leetcode最常见的150道前端面试题 --- 简单题上(44题)
前言 本文题目选自 LeetCode 精选 TOP 面试题,而这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位)。本文挑选其中所有简单题做归类和解法分析。后续更新所
记一道字节跳动的算法面试题
前几天有个朋友去面试字节跳动,面试官问了他一道链表相关的算法题,不过他一时之间没做出来,就来问了我一下,感觉这道题还不错,拿来讲一讲。 给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一…
基础面试题 — 数据结构与算法
数据结构是对实际问题中的数据元素及相互间的联系的抽象。一般用线性表来表示常用数据结构,线性表分为顺序存储的顺序表和连式存储的链表。 在学习算法之前,必须要了解一些常用数据结构的概念。 栈:一种特殊串联形式的抽象数据类型,可由链表或数组实现,通过链表或数组的栈顶(Top)指针对数…
字节跳动前端面试必备-LeetCode经典面试算法题
2019年马上就要结束了,相信很多童鞋都开始蠢蠢欲动了,寻找新的机会了,但是工作太忙没有时间刷算法题,面试的时候好心虚。这里双手奉上40道LeetCode上经典面试算法题,整理的内容有点长,建议先收藏,慢慢消化,在来年顺利拿到满意的offer。 内容较多,整理不易,希望大家关注…
年终奖,还得是腾讯(含面试算法原题)
腾讯年终奖 什么是真正的好公司? 一年到头,出不了几次裁员等劳务纠纷的吃瓜新闻。 只有到年底了,才因为年终奖远高于行业水平,实在没法低调了,"被迫"上热搜。 最近网友爆料了腾讯头牌部门的年终奖: WX
一文搞懂高频面试题之限流算法,从算法原理到实现,再到对比分析
限流是指在系统面临高并发、大流量请求的情况下,限制新的流量对系统的访问,从而保证系统服务的安全性。常用的限流算法有计数器固定窗口算法、滑动窗口算法、漏斗算法和令牌桶算法,下面将对这几种算法进行分别介绍,并给出具体的实现。本文目录如下,略长,读者可以全文阅读,同样也可以只看感兴趣…
Android复习资料——常见面试算法题汇总(一)
接触 Android 开发也有一段时间了,前段时间便开始想抽空整理一些知识点,通过笔记整理的方式减少自己重复学习的时间成本和提高自身的效率。 本文总结的部分是常见面试算法题,算法题解均有 java 实现。目录可以在右边侧边栏查看跳转。 之后会整理的知识点还会有 java、And…
【算法面试】leetcode最常见的150道前端面试题 --- 简单题下(44题)
本文题目选自 LeetCode 精选 TOP 面试题,这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位)。 上版本部分请参考# 简单题上 二叉树(DFS) 二叉树前
前端跳槽面试算法——动态规划
众所周知,与后台开发人员相比,算法是我们前端开发人员的一个弱项。 而近两年随着互联网行业竞争愈发激烈,市场上对前端岗位的算法要求也有一定的提升。 我记得大三参加腾讯的校招面试时只准备了几种常见的排序算法就足以应对了,然而今年包括今日头条在内的多家大厂的前端笔试题目中都出现了"贪…
前端妹子失业在家刷题,开发了个leetcode刷题工具,效率直接翻倍!
大家好,我是薇薇,一名沪漂女程序员,年前惨遭被裁,正值在家悲伤抠脚之际,突然看到两位朋友在合谋开发一款刷leetcode的小工具——leetcode-practice…… 下面重点稍微来介绍一下 在神
在vscode中配置LeetCode插件,从此愉快地刷题
大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器。但是没想到在用的时候遇到了一些麻烦,花了一点时间才解决。所以写这篇文章除了给大家安利这个好用的插件之外,也是为了帮助更多的同学避免踩坑。 vscode在工业界鼎鼎大名,被誉为微软少有…
LeetCode 算法题刷题心得(JavaScript)
花了十几天,把《算法》看了一遍。然后重新 AC 了一遍 LeetCode 的题并记录下心得。
「面试必问」leetcode高频题精选
算法一直是大厂前端面试常问的一块,而大家往往准备这方面的面试都是通过leetcode刷题。 我特地整理了几道leetcode中「很有意思」而且非常「高频」的算法题目,分别给出了思路分析(带图解)和代码实现。 给定一个整数数组 nums 和一个目标值 target,请你在该数组中…
leetcode分类刷题-附题号链接
题目分类及刷题顺序推荐 一. 数组 二. 字符串 三. 数与位 四. 栈与递归 五. 链表 六. 哈希表 七. 贪心算法 八. 双指针法 九. 树 十. 图与搜索 十一. 二分查找 十二. 二进制运算
用JavaScript刷LeetCode的正确姿势
虽然很多人都觉得前端算法弱,但其实 JavaScript 也可以刷题啊!最近两个月断断续续刷完了 leetcode 前 200 的 middle + hard ,总结了一些刷题常用的模板代码。走过路过发现 bug 请指出,拯救一个辣鸡(但很帅)的少年就靠您啦! 包括打印函数和一…
耗时3个月,近10W字的刷题笔记,多语言通吃,秒杀 80% Leetcode 题目!
众所周知,现在的互联网公司面试,只要是写代码的岗位,都会来一套算法题组合拳伺候。 所以大家在准备校招、社招,或者闲暇的时候,都可以刷刷题,保持良好的手感。
我是如何刷 LeetCode 的?
我就是那个 @量子位 答案里面提到的“lucifer 小哥哥”。 我本人从开始准备算法以来,大概经过了几个月的时间,这期间自己成长了很多,从刷题菜鸡,到现在对刷题套路,题型有了自己的理解,感受还是蛮多的。我本人不是算法高手,算是勤能补拙类型。不过经过几个月的学习和练习,不仅面试…
LeetCode热题100道-Day01
1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 4. 寻找两个正序数组的中位数 5. 最长回文子串
在 VsCode 中优雅的刷 LeetCode 🔥
leetcode网站中的编程环境,代码提示,快捷键并不友好,我们在刷题的时候往往不高效,且过后也不能快速,随时随地的进行方便的复盘。所以在这篇文章中我将介绍如何在 VsCode 中通过插件来高效的刷题
老司机带你刷 LeetCode
老司机带你刷 LeetCode
LeetCode热题100道-Day02
LeetCode热题100道-Day02 136. 只出现一次的数字 在stream流中的reduce方法使用异或运算。
🚀使用TypeScript刷LeetCode,前端同学刷题新体验
作为一个前端同学,为什么不用JavaScript刷LeetCode,而是使用TypeScript来刷题呢? 当然,你也可以选择c++、java来刷题,但我认为还是用自己研究方向的语言比较好
那些年,面试中常见的数据结构基础和算法题(上) | 掘金技术征文
作为一个多年的老菜鸟,有感于大部分的公司面试 “面试造航母,工作螺丝钉” 的作风,特整理了这个数据结构和算法面试题系列。对于校招而言,如果没有太多实践/实习经验,大公司往往喜欢考察数据结构和算法,如微软就特别喜欢在校招时手写算法题,而且难度还不小,当年我毕业找工作时也是颇受折磨…
数据结构和算法面试题系列—数字题总结
数学是科学之基础,数字题往往也是被面试玩出花来。数学本身是有趣味的一门学科,前段时间有点不务正业,对数学产生了浓厚的兴趣,于是看了几本数学史论的书,也买了《几何原本》和《陶哲轩的实分析》,看了部分章节,受益良多,有兴趣的朋友可以看看。特别是几何原本,欧几里得上千年前的著作,里面…
500 个数据结构及算法的面试题及答案
500 Data structures and algorithms interview questions and their solutions
数据结构和算法面试题系列—背包问题总结
背包问题包括0-1背包问题、完全背包问题、部分背包问题等多种变种。其中,最简单的是部分背包问题,它可以采用贪心法来解决,而其他几种背包问题往往需要动态规划来求解。本文主要来源于《背包问题九讲》,我选择了比较简单的0-1背包问题和完全背包问题进行汇总。同时给出实现代码,如有错误,…
数据结构和算法面试题系列—二叉树面试题汇总
继上一篇总结了二叉树的基础操作后,这一篇文章汇总下常见的二叉树相关面试题,主要分为判断类、构建类、存储类、查找类、距离类、混合类这六类大问题。本文所有代码在 这里 。 判断类问题主要分下下判断二叉树是否是二叉搜索树、二叉完全树,以及两棵二叉树是否同构这三个问题。 题: 给定一棵…
数据结构与算法 #16 简答一波 HashMap 常见八股面试题
HashMap 是我们熟悉的散列表实现,也是 “面试八股文” 的标准题库之一。今天,我给出一份 HashMap 高频面试题口述简答答案,希望对你刷题有帮助。
数据结构和算法面试题系列—递归算法总结
前面总结了随机算法,这次再把以前写的递归算法的文章梳理一下,这篇文章主要是受到宋劲松老师写的《Linux C编程》的递归章节启发写的。最能体现算法精髓的非递归莫属了,希望这篇文章对初学递归或者对递归有困惑的朋友们能有所帮助,如有错误,也恳请各路大牛指正。二叉树的递归示例代码请参…
数据结构和算法面试题系列—C指针、数组和结构体
在用C语言实现一些常见的数据结构和算法时,C语言的基础不能少,特别是指针和结构体等知识。 linux中的C编译得到的目标文件和可执行文件都是ELF格式的,可执行文件中以segment来划分,目标文件中,我们是以section划分。一个segment包含一个或多个section,…
数据结构和算法面试题系列—随机算法总结
随机算法涉及大量概率论知识,有时候难得去仔细看推导过程,当然能够完全了解推导的过程自然是有好处的,如果不了解推导过程,至少记住结论也是必要的。本文总结最常见的一些随机算法的题目,是几年前找工作的时候写的。需要说明的是,这里用到的随机函数 randInt(a, b) 假定它能随机…
数据结构和算法面试题系列—栈
栈作为一种基本的数据结构,在很多地方有运用,比如函数递归,前后缀表达式转换等。本文会用C数组来实现栈结构(使用链表实现可以参见链表那一节,使用头插法构建链表即可),并对常见的几个跟栈相关的面试题进行分析,本文代码在 这里。 我们使用结构体来定义栈,使用柔性数组来存储元素。几个宏…
数据结构和算法面试题系列—链表
链表作为一种基础的数据结构,在很多地方会用到。如在Linux内核代码,redis源码,python源码中都有使用。除了单向链表,还有双向链表,本文主要关注单向链表(含部分循环链表题目,会在题目中注明,其他情况都是讨论简单的单向链表)。双向链表在redis中有很好的实现,也在我的…
数据结构和算法面试题系列—排序算法之快速排序
快速排序也是基于分治模式,类似归并排序那样,不同的是快速排序划分最后不需要merge。对一个数组 A[p..r] 进行快速排序分为三个步骤: 划分: 数组 A[p...r] 被划分为两个子数组 A[p...q-1] 和 A[q+1...r],使得 A[p...q-1] 中每个元…
数据结构和算法面试题系列—字符串
字符串作为数据结构中的基础内容,也是面试中经常会考察的基本功之一,比如实现 strcpy,strcmp等基本函数等,回文字符串,字符串搜索,正则表达式等。本文相关代码见 这里。 首先来看一些字符串的基本函数的实现,以下代码取自MIT6.828课程。 题: 给定一个字符串,找出该…
数据结构和算法面试题系列—排序算法之基础排序
排序算法也是面试中常常提及的内容,问的最多的应该是快速排序、堆排序。这些排序算法很基础,但是如果平时不怎么写代码的话,面试的时候总会出现各种bug。虽然思想都知道,但是就是写不出来。本文打算对各种排序算法进行一个汇总,包括插入排序、冒泡排序、选择排序、计数排序、归并排序,基数排…
数据结构和算法面试题系列—二叉树基础
在说二叉树前,先来看看什么是树。树中基本单位是结点,结点之间的链接,称为分支。一棵树最上面的结点称之为根节点,而下面的结点为子结点。一个结点可以有0个或多个子结点,没有子结点的结点我们称之为叶结点。 二叉树是指子结点数目不超过2个的树,它是一种很经典的数据结构。而二叉搜索树(B…
数据结构和算法面试题系列—二分查找算法详解
二分查找本身是个简单的算法,但是正是因为其简单,更容易写错。甚至于在二分查找算法刚出现的时候,也是存在bug的(溢出的bug),这个bug直到几十年后才修复(见《编程珠玑》)。本文打算对二分查找算法进行总结,并对由二分查找引申出来的问题进行分析和汇总。若有错误,请指正。本文完整…
数据结构和算法面试题系列—二叉堆
本文要描述的堆是二叉堆。二叉堆是一种数组对象,可以被视为一棵完全二叉树,树中每个结点和数组中存放该结点值的那个元素对应。树的每一层都是填满的,最后一层除外。二叉堆可以用于实现堆排序,优先级队列等。本文代码地址在 这里。 使用数组来实现二叉堆,二叉堆两个属性,其中 LENGTH(…
2026-06-17 周三
💻49 题
💻 算法 · 49题
面试官:你都工作3年了,这个算法题都不会?
金三银四,又到了换工作的最佳时机,我幻想着只要跳个槽,就能离开这个”鸟地方“,拿着更多的钱,干着最爽的事...结果被一道算法题坑了,"有效的括号"使用栈来解,会非常简单.
前端笔试&面试爬坑系列---算法
终于来了,算法相关的。 其实个人理解,前端岗位对于算法的要求与其他IT岗位相比,是低得多的。 但是小白我经历了如蚂蚁金服、网易这样的大厂教做人之后,还是觉得,对于一些基本算法、思想的掌握还是必须的。 然后,就把自己遇到的、学到的算法相关的再总结一下,方便自己随时备战面试。 JS…
【前端词典】有趣的大厂算法面试题
看到一篇算法文章,觉得着实有趣,但不知为何我看到题后首先想到的是田忌赛马。今天我也试着解释下这题,当做是一个学习的过程。 64 匹马分 8 次在全部比完一次,然后我们可以把目标缩小到 32 匹马。 1、八次比完后,我们可以将每一匹马的速度按下表排好。 剩下的 8 组 32 匹马…
面试遇到了算法题?看这篇就够啦。
链表即是由节点(Node)组成的线性集合,每个节点可以利用指针指向其他节点。它是一种包含了多个节点的、能够用于表示序列的数据结构。 单向链表: 链表中的节点仅指向下一个节点,并且最后一个节点指向空。 双向链表: 其中每个节点具有两个指针 p、n,使得 p 指向先前节点并且 n …
👨💻面试官:工作两年了,这么简单的算法题你都不会?
回想以前遇到过的面试官,甚至包括自己作为面试官的时候,大都是停留在问【是什么】的问题上,而很少去追问【为什么】。。。
面试必备:八种排序算法原理及Java实现
1. 概述 排序算法分为内部排序和外部排序,内部排序把数据记录放在内存中进行排序,而外部排序因排序的数据量大,内存不能一次容纳全部的排序记录,所以在排序过程中需要访问外存。 经常提及的八大排序算法指的就是内部排序的八种算法,分别是冒泡排序、快速排序、直接插入排序、希尔排序、简单…
常见的js算法面试题收集,es6实现
持续更新,持续更新...
2024前端高频面试题之-- 数据结构与算法篇
【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 2024前端高频面试题
[算法总结] 13 道题搞定 BAT 面试——字符串
1. KMP 算法 谈到字符串问题,不得不提的就是 KMP 算法,它是用来解决字符串查找的问题,可以在一个字符串(S)中查找一个子串(W)出现的位置。KMP 算法把字符匹配的时间复杂度缩小到 O(m+n) ,而空间复杂度也只有O(m)。因为“暴力搜索”的方法会反复回溯主串,导致…
前端跳槽面试算法——动态规划
众所周知,与后台开发人员相比,算法是我们前端开发人员的一个弱项。 而近两年随着互联网行业竞争愈发激烈,市场上对前端岗位的算法要求也有一定的提升。 我记得大三参加腾讯的校招面试时只准备了几种常见的排序算法就足以应对了,然而今年包括今日头条在内的多家大厂的前端笔试题目中都出现了"贪…
前端面试遇到的算法题
尽可能的全面正确的解析一个任意 url 的所有参数为 Object,注意边界条件的处理。 请使用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中,并返回第一次出现的位置(找不到返回 -1)。 有一个祖先树状 json 对象,当一个人有一个儿子的时候,其 child …
[算法总结] 20 道题搞定 BAT 面试——二叉树
0. 几个概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密哈~~~ 满二叉树:除最后一层外,每一层上的所有节点都有两个子节点,最后一层都是叶子…
【算法面试】leetcode最常见的150道前端面试题 --- 简单题上(44题)
前言 本文题目选自 LeetCode 精选 TOP 面试题,而这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位)。本文挑选其中所有简单题做归类和解法分析。后续更新所
记一道字节跳动的算法面试题
前几天有个朋友去面试字节跳动,面试官问了他一道链表相关的算法题,不过他一时之间没做出来,就来问了我一下,感觉这道题还不错,拿来讲一讲。 给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一…
基础面试题 — 数据结构与算法
数据结构是对实际问题中的数据元素及相互间的联系的抽象。一般用线性表来表示常用数据结构,线性表分为顺序存储的顺序表和连式存储的链表。 在学习算法之前,必须要了解一些常用数据结构的概念。 栈:一种特殊串联形式的抽象数据类型,可由链表或数组实现,通过链表或数组的栈顶(Top)指针对数…
字节跳动前端面试必备-LeetCode经典面试算法题
2019年马上就要结束了,相信很多童鞋都开始蠢蠢欲动了,寻找新的机会了,但是工作太忙没有时间刷算法题,面试的时候好心虚。这里双手奉上40道LeetCode上经典面试算法题,整理的内容有点长,建议先收藏,慢慢消化,在来年顺利拿到满意的offer。 内容较多,整理不易,希望大家关注…
年终奖,还得是腾讯(含面试算法原题)
腾讯年终奖 什么是真正的好公司? 一年到头,出不了几次裁员等劳务纠纷的吃瓜新闻。 只有到年底了,才因为年终奖远高于行业水平,实在没法低调了,"被迫"上热搜。 最近网友爆料了腾讯头牌部门的年终奖: WX
一文搞懂高频面试题之限流算法,从算法原理到实现,再到对比分析
限流是指在系统面临高并发、大流量请求的情况下,限制新的流量对系统的访问,从而保证系统服务的安全性。常用的限流算法有计数器固定窗口算法、滑动窗口算法、漏斗算法和令牌桶算法,下面将对这几种算法进行分别介绍,并给出具体的实现。本文目录如下,略长,读者可以全文阅读,同样也可以只看感兴趣…
Android复习资料——常见面试算法题汇总(一)
接触 Android 开发也有一段时间了,前段时间便开始想抽空整理一些知识点,通过笔记整理的方式减少自己重复学习的时间成本和提高自身的效率。 本文总结的部分是常见面试算法题,算法题解均有 java 实现。目录可以在右边侧边栏查看跳转。 之后会整理的知识点还会有 java、And…
前端妹子失业在家刷题,开发了个leetcode刷题工具,效率直接翻倍!
大家好,我是薇薇,一名沪漂女程序员,年前惨遭被裁,正值在家悲伤抠脚之际,突然看到两位朋友在合谋开发一款刷leetcode的小工具——leetcode-practice…… 下面重点稍微来介绍一下 在神
在vscode中配置LeetCode插件,从此愉快地刷题
大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器。但是没想到在用的时候遇到了一些麻烦,花了一点时间才解决。所以写这篇文章除了给大家安利这个好用的插件之外,也是为了帮助更多的同学避免踩坑。 vscode在工业界鼎鼎大名,被誉为微软少有…
LeetCode 算法题刷题心得(JavaScript)
花了十几天,把《算法》看了一遍。然后重新 AC 了一遍 LeetCode 的题并记录下心得。
「面试必问」leetcode高频题精选
算法一直是大厂前端面试常问的一块,而大家往往准备这方面的面试都是通过leetcode刷题。 我特地整理了几道leetcode中「很有意思」而且非常「高频」的算法题目,分别给出了思路分析(带图解)和代码实现。 给定一个整数数组 nums 和一个目标值 target,请你在该数组中…
leetcode分类刷题-附题号链接
题目分类及刷题顺序推荐 一. 数组 二. 字符串 三. 数与位 四. 栈与递归 五. 链表 六. 哈希表 七. 贪心算法 八. 双指针法 九. 树 十. 图与搜索 十一. 二分查找 十二. 二进制运算
用JavaScript刷LeetCode的正确姿势
虽然很多人都觉得前端算法弱,但其实 JavaScript 也可以刷题啊!最近两个月断断续续刷完了 leetcode 前 200 的 middle + hard ,总结了一些刷题常用的模板代码。走过路过发现 bug 请指出,拯救一个辣鸡(但很帅)的少年就靠您啦! 包括打印函数和一…
耗时3个月,近10W字的刷题笔记,多语言通吃,秒杀 80% Leetcode 题目!
众所周知,现在的互联网公司面试,只要是写代码的岗位,都会来一套算法题组合拳伺候。 所以大家在准备校招、社招,或者闲暇的时候,都可以刷刷题,保持良好的手感。
我是如何刷 LeetCode 的?
我就是那个 @量子位 答案里面提到的“lucifer 小哥哥”。 我本人从开始准备算法以来,大概经过了几个月的时间,这期间自己成长了很多,从刷题菜鸡,到现在对刷题套路,题型有了自己的理解,感受还是蛮多的。我本人不是算法高手,算是勤能补拙类型。不过经过几个月的学习和练习,不仅面试…
LeetCode热题100道-Day01
1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 4. 寻找两个正序数组的中位数 5. 最长回文子串
在 VsCode 中优雅的刷 LeetCode 🔥
leetcode网站中的编程环境,代码提示,快捷键并不友好,我们在刷题的时候往往不高效,且过后也不能快速,随时随地的进行方便的复盘。所以在这篇文章中我将介绍如何在 VsCode 中通过插件来高效的刷题
老司机带你刷 LeetCode
老司机带你刷 LeetCode
LeetCode热题100道-Day02
LeetCode热题100道-Day02 136. 只出现一次的数字 在stream流中的reduce方法使用异或运算。
🚀使用TypeScript刷LeetCode,前端同学刷题新体验
作为一个前端同学,为什么不用JavaScript刷LeetCode,而是使用TypeScript来刷题呢? 当然,你也可以选择c++、java来刷题,但我认为还是用自己研究方向的语言比较好
那些年,面试中常见的数据结构基础和算法题(上) | 掘金技术征文
作为一个多年的老菜鸟,有感于大部分的公司面试 “面试造航母,工作螺丝钉” 的作风,特整理了这个数据结构和算法面试题系列。对于校招而言,如果没有太多实践/实习经验,大公司往往喜欢考察数据结构和算法,如微软就特别喜欢在校招时手写算法题,而且难度还不小,当年我毕业找工作时也是颇受折磨…
数据结构和算法面试题系列—数字题总结
数学是科学之基础,数字题往往也是被面试玩出花来。数学本身是有趣味的一门学科,前段时间有点不务正业,对数学产生了浓厚的兴趣,于是看了几本数学史论的书,也买了《几何原本》和《陶哲轩的实分析》,看了部分章节,受益良多,有兴趣的朋友可以看看。特别是几何原本,欧几里得上千年前的著作,里面…
500 个数据结构及算法的面试题及答案
500 Data structures and algorithms interview questions and their solutions
数据结构和算法面试题系列—背包问题总结
背包问题包括0-1背包问题、完全背包问题、部分背包问题等多种变种。其中,最简单的是部分背包问题,它可以采用贪心法来解决,而其他几种背包问题往往需要动态规划来求解。本文主要来源于《背包问题九讲》,我选择了比较简单的0-1背包问题和完全背包问题进行汇总。同时给出实现代码,如有错误,…
数据结构和算法面试题系列—二叉树面试题汇总
继上一篇总结了二叉树的基础操作后,这一篇文章汇总下常见的二叉树相关面试题,主要分为判断类、构建类、存储类、查找类、距离类、混合类这六类大问题。本文所有代码在 这里 。 判断类问题主要分下下判断二叉树是否是二叉搜索树、二叉完全树,以及两棵二叉树是否同构这三个问题。 题: 给定一棵…
数据结构与算法 #16 简答一波 HashMap 常见八股面试题
HashMap 是我们熟悉的散列表实现,也是 “面试八股文” 的标准题库之一。今天,我给出一份 HashMap 高频面试题口述简答答案,希望对你刷题有帮助。
数据结构和算法面试题系列—递归算法总结
前面总结了随机算法,这次再把以前写的递归算法的文章梳理一下,这篇文章主要是受到宋劲松老师写的《Linux C编程》的递归章节启发写的。最能体现算法精髓的非递归莫属了,希望这篇文章对初学递归或者对递归有困惑的朋友们能有所帮助,如有错误,也恳请各路大牛指正。二叉树的递归示例代码请参…
数据结构和算法面试题系列—C指针、数组和结构体
在用C语言实现一些常见的数据结构和算法时,C语言的基础不能少,特别是指针和结构体等知识。 linux中的C编译得到的目标文件和可执行文件都是ELF格式的,可执行文件中以segment来划分,目标文件中,我们是以section划分。一个segment包含一个或多个section,…
数据结构和算法面试题系列—随机算法总结
随机算法涉及大量概率论知识,有时候难得去仔细看推导过程,当然能够完全了解推导的过程自然是有好处的,如果不了解推导过程,至少记住结论也是必要的。本文总结最常见的一些随机算法的题目,是几年前找工作的时候写的。需要说明的是,这里用到的随机函数 randInt(a, b) 假定它能随机…
数据结构和算法面试题系列—栈
栈作为一种基本的数据结构,在很多地方有运用,比如函数递归,前后缀表达式转换等。本文会用C数组来实现栈结构(使用链表实现可以参见链表那一节,使用头插法构建链表即可),并对常见的几个跟栈相关的面试题进行分析,本文代码在 这里。 我们使用结构体来定义栈,使用柔性数组来存储元素。几个宏…
数据结构和算法面试题系列—链表
链表作为一种基础的数据结构,在很多地方会用到。如在Linux内核代码,redis源码,python源码中都有使用。除了单向链表,还有双向链表,本文主要关注单向链表(含部分循环链表题目,会在题目中注明,其他情况都是讨论简单的单向链表)。双向链表在redis中有很好的实现,也在我的…
数据结构和算法面试题系列—排序算法之快速排序
快速排序也是基于分治模式,类似归并排序那样,不同的是快速排序划分最后不需要merge。对一个数组 A[p..r] 进行快速排序分为三个步骤: 划分: 数组 A[p...r] 被划分为两个子数组 A[p...q-1] 和 A[q+1...r],使得 A[p...q-1] 中每个元…
数据结构和算法面试题系列—字符串
字符串作为数据结构中的基础内容,也是面试中经常会考察的基本功之一,比如实现 strcpy,strcmp等基本函数等,回文字符串,字符串搜索,正则表达式等。本文相关代码见 这里。 首先来看一些字符串的基本函数的实现,以下代码取自MIT6.828课程。 题: 给定一个字符串,找出该…
数据结构和算法面试题系列—排序算法之基础排序
排序算法也是面试中常常提及的内容,问的最多的应该是快速排序、堆排序。这些排序算法很基础,但是如果平时不怎么写代码的话,面试的时候总会出现各种bug。虽然思想都知道,但是就是写不出来。本文打算对各种排序算法进行一个汇总,包括插入排序、冒泡排序、选择排序、计数排序、归并排序,基数排…
数据结构和算法面试题系列—二叉树基础
在说二叉树前,先来看看什么是树。树中基本单位是结点,结点之间的链接,称为分支。一棵树最上面的结点称之为根节点,而下面的结点为子结点。一个结点可以有0个或多个子结点,没有子结点的结点我们称之为叶结点。 二叉树是指子结点数目不超过2个的树,它是一种很经典的数据结构。而二叉搜索树(B…
数据结构和算法面试题系列—二分查找算法详解
二分查找本身是个简单的算法,但是正是因为其简单,更容易写错。甚至于在二分查找算法刚出现的时候,也是存在bug的(溢出的bug),这个bug直到几十年后才修复(见《编程珠玑》)。本文打算对二分查找算法进行总结,并对由二分查找引申出来的问题进行分析和汇总。若有错误,请指正。本文完整…
数据结构和算法面试题系列—二叉堆
本文要描述的堆是二叉堆。二叉堆是一种数组对象,可以被视为一棵完全二叉树,树中每个结点和数组中存放该结点值的那个元素对应。树的每一层都是填满的,最后一层除外。二叉堆可以用于实现堆排序,优先级队列等。本文代码地址在 这里。 使用数组来实现二叉堆,二叉堆两个属性,其中 LENGTH(…
2026-06-16 周二
💻49 题
💻 算法 · 49题
面试官:你都工作3年了,这个算法题都不会?
金三银四,又到了换工作的最佳时机,我幻想着只要跳个槽,就能离开这个”鸟地方“,拿着更多的钱,干着最爽的事...结果被一道算法题坑了,"有效的括号"使用栈来解,会非常简单.
前端笔试&面试爬坑系列---算法
终于来了,算法相关的。 其实个人理解,前端岗位对于算法的要求与其他IT岗位相比,是低得多的。 但是小白我经历了如蚂蚁金服、网易这样的大厂教做人之后,还是觉得,对于一些基本算法、思想的掌握还是必须的。 然后,就把自己遇到的、学到的算法相关的再总结一下,方便自己随时备战面试。 JS…
【前端词典】有趣的大厂算法面试题
看到一篇算法文章,觉得着实有趣,但不知为何我看到题后首先想到的是田忌赛马。今天我也试着解释下这题,当做是一个学习的过程。 64 匹马分 8 次在全部比完一次,然后我们可以把目标缩小到 32 匹马。 1、八次比完后,我们可以将每一匹马的速度按下表排好。 剩下的 8 组 32 匹马…
面试遇到了算法题?看这篇就够啦。
链表即是由节点(Node)组成的线性集合,每个节点可以利用指针指向其他节点。它是一种包含了多个节点的、能够用于表示序列的数据结构。 单向链表: 链表中的节点仅指向下一个节点,并且最后一个节点指向空。 双向链表: 其中每个节点具有两个指针 p、n,使得 p 指向先前节点并且 n …
👨💻面试官:工作两年了,这么简单的算法题你都不会?
回想以前遇到过的面试官,甚至包括自己作为面试官的时候,大都是停留在问【是什么】的问题上,而很少去追问【为什么】。。。
面试必备:八种排序算法原理及Java实现
1. 概述 排序算法分为内部排序和外部排序,内部排序把数据记录放在内存中进行排序,而外部排序因排序的数据量大,内存不能一次容纳全部的排序记录,所以在排序过程中需要访问外存。 经常提及的八大排序算法指的就是内部排序的八种算法,分别是冒泡排序、快速排序、直接插入排序、希尔排序、简单…
常见的js算法面试题收集,es6实现
持续更新,持续更新...
2024前端高频面试题之-- 数据结构与算法篇
【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 2024前端高频面试题
[算法总结] 13 道题搞定 BAT 面试——字符串
1. KMP 算法 谈到字符串问题,不得不提的就是 KMP 算法,它是用来解决字符串查找的问题,可以在一个字符串(S)中查找一个子串(W)出现的位置。KMP 算法把字符匹配的时间复杂度缩小到 O(m+n) ,而空间复杂度也只有O(m)。因为“暴力搜索”的方法会反复回溯主串,导致…
前端跳槽面试算法——动态规划
众所周知,与后台开发人员相比,算法是我们前端开发人员的一个弱项。 而近两年随着互联网行业竞争愈发激烈,市场上对前端岗位的算法要求也有一定的提升。 我记得大三参加腾讯的校招面试时只准备了几种常见的排序算法就足以应对了,然而今年包括今日头条在内的多家大厂的前端笔试题目中都出现了"贪…
前端面试遇到的算法题
尽可能的全面正确的解析一个任意 url 的所有参数为 Object,注意边界条件的处理。 请使用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中,并返回第一次出现的位置(找不到返回 -1)。 有一个祖先树状 json 对象,当一个人有一个儿子的时候,其 child …
[算法总结] 20 道题搞定 BAT 面试——二叉树
0. 几个概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密哈~~~ 满二叉树:除最后一层外,每一层上的所有节点都有两个子节点,最后一层都是叶子…
【算法面试】leetcode最常见的150道前端面试题 --- 简单题上(44题)
前言 本文题目选自 LeetCode 精选 TOP 面试题,而这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位)。本文挑选其中所有简单题做归类和解法分析。后续更新所
记一道字节跳动的算法面试题
前几天有个朋友去面试字节跳动,面试官问了他一道链表相关的算法题,不过他一时之间没做出来,就来问了我一下,感觉这道题还不错,拿来讲一讲。 给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一…
基础面试题 — 数据结构与算法
数据结构是对实际问题中的数据元素及相互间的联系的抽象。一般用线性表来表示常用数据结构,线性表分为顺序存储的顺序表和连式存储的链表。 在学习算法之前,必须要了解一些常用数据结构的概念。 栈:一种特殊串联形式的抽象数据类型,可由链表或数组实现,通过链表或数组的栈顶(Top)指针对数…
字节跳动前端面试必备-LeetCode经典面试算法题
2019年马上就要结束了,相信很多童鞋都开始蠢蠢欲动了,寻找新的机会了,但是工作太忙没有时间刷算法题,面试的时候好心虚。这里双手奉上40道LeetCode上经典面试算法题,整理的内容有点长,建议先收藏,慢慢消化,在来年顺利拿到满意的offer。 内容较多,整理不易,希望大家关注…
年终奖,还得是腾讯(含面试算法原题)
腾讯年终奖 什么是真正的好公司? 一年到头,出不了几次裁员等劳务纠纷的吃瓜新闻。 只有到年底了,才因为年终奖远高于行业水平,实在没法低调了,"被迫"上热搜。 最近网友爆料了腾讯头牌部门的年终奖: WX
一文搞懂高频面试题之限流算法,从算法原理到实现,再到对比分析
限流是指在系统面临高并发、大流量请求的情况下,限制新的流量对系统的访问,从而保证系统服务的安全性。常用的限流算法有计数器固定窗口算法、滑动窗口算法、漏斗算法和令牌桶算法,下面将对这几种算法进行分别介绍,并给出具体的实现。本文目录如下,略长,读者可以全文阅读,同样也可以只看感兴趣…
Android复习资料——常见面试算法题汇总(一)
接触 Android 开发也有一段时间了,前段时间便开始想抽空整理一些知识点,通过笔记整理的方式减少自己重复学习的时间成本和提高自身的效率。 本文总结的部分是常见面试算法题,算法题解均有 java 实现。目录可以在右边侧边栏查看跳转。 之后会整理的知识点还会有 java、And…
前端妹子失业在家刷题,开发了个leetcode刷题工具,效率直接翻倍!
大家好,我是薇薇,一名沪漂女程序员,年前惨遭被裁,正值在家悲伤抠脚之际,突然看到两位朋友在合谋开发一款刷leetcode的小工具——leetcode-practice…… 下面重点稍微来介绍一下 在神
在vscode中配置LeetCode插件,从此愉快地刷题
大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器。但是没想到在用的时候遇到了一些麻烦,花了一点时间才解决。所以写这篇文章除了给大家安利这个好用的插件之外,也是为了帮助更多的同学避免踩坑。 vscode在工业界鼎鼎大名,被誉为微软少有…
LeetCode 算法题刷题心得(JavaScript)
花了十几天,把《算法》看了一遍。然后重新 AC 了一遍 LeetCode 的题并记录下心得。
「面试必问」leetcode高频题精选
算法一直是大厂前端面试常问的一块,而大家往往准备这方面的面试都是通过leetcode刷题。 我特地整理了几道leetcode中「很有意思」而且非常「高频」的算法题目,分别给出了思路分析(带图解)和代码实现。 给定一个整数数组 nums 和一个目标值 target,请你在该数组中…
leetcode分类刷题-附题号链接
题目分类及刷题顺序推荐 一. 数组 二. 字符串 三. 数与位 四. 栈与递归 五. 链表 六. 哈希表 七. 贪心算法 八. 双指针法 九. 树 十. 图与搜索 十一. 二分查找 十二. 二进制运算
用JavaScript刷LeetCode的正确姿势
虽然很多人都觉得前端算法弱,但其实 JavaScript 也可以刷题啊!最近两个月断断续续刷完了 leetcode 前 200 的 middle + hard ,总结了一些刷题常用的模板代码。走过路过发现 bug 请指出,拯救一个辣鸡(但很帅)的少年就靠您啦! 包括打印函数和一…
耗时3个月,近10W字的刷题笔记,多语言通吃,秒杀 80% Leetcode 题目!
众所周知,现在的互联网公司面试,只要是写代码的岗位,都会来一套算法题组合拳伺候。 所以大家在准备校招、社招,或者闲暇的时候,都可以刷刷题,保持良好的手感。
我是如何刷 LeetCode 的?
我就是那个 @量子位 答案里面提到的“lucifer 小哥哥”。 我本人从开始准备算法以来,大概经过了几个月的时间,这期间自己成长了很多,从刷题菜鸡,到现在对刷题套路,题型有了自己的理解,感受还是蛮多的。我本人不是算法高手,算是勤能补拙类型。不过经过几个月的学习和练习,不仅面试…
LeetCode热题100道-Day01
1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 4. 寻找两个正序数组的中位数 5. 最长回文子串
在 VsCode 中优雅的刷 LeetCode 🔥
leetcode网站中的编程环境,代码提示,快捷键并不友好,我们在刷题的时候往往不高效,且过后也不能快速,随时随地的进行方便的复盘。所以在这篇文章中我将介绍如何在 VsCode 中通过插件来高效的刷题
老司机带你刷 LeetCode
老司机带你刷 LeetCode
LeetCode热题100道-Day02
LeetCode热题100道-Day02 136. 只出现一次的数字 在stream流中的reduce方法使用异或运算。
🚀使用TypeScript刷LeetCode,前端同学刷题新体验
作为一个前端同学,为什么不用JavaScript刷LeetCode,而是使用TypeScript来刷题呢? 当然,你也可以选择c++、java来刷题,但我认为还是用自己研究方向的语言比较好
那些年,面试中常见的数据结构基础和算法题(上) | 掘金技术征文
作为一个多年的老菜鸟,有感于大部分的公司面试 “面试造航母,工作螺丝钉” 的作风,特整理了这个数据结构和算法面试题系列。对于校招而言,如果没有太多实践/实习经验,大公司往往喜欢考察数据结构和算法,如微软就特别喜欢在校招时手写算法题,而且难度还不小,当年我毕业找工作时也是颇受折磨…
数据结构和算法面试题系列—数字题总结
数学是科学之基础,数字题往往也是被面试玩出花来。数学本身是有趣味的一门学科,前段时间有点不务正业,对数学产生了浓厚的兴趣,于是看了几本数学史论的书,也买了《几何原本》和《陶哲轩的实分析》,看了部分章节,受益良多,有兴趣的朋友可以看看。特别是几何原本,欧几里得上千年前的著作,里面…
500 个数据结构及算法的面试题及答案
500 Data structures and algorithms interview questions and their solutions
数据结构和算法面试题系列—背包问题总结
背包问题包括0-1背包问题、完全背包问题、部分背包问题等多种变种。其中,最简单的是部分背包问题,它可以采用贪心法来解决,而其他几种背包问题往往需要动态规划来求解。本文主要来源于《背包问题九讲》,我选择了比较简单的0-1背包问题和完全背包问题进行汇总。同时给出实现代码,如有错误,…
数据结构和算法面试题系列—二叉树面试题汇总
继上一篇总结了二叉树的基础操作后,这一篇文章汇总下常见的二叉树相关面试题,主要分为判断类、构建类、存储类、查找类、距离类、混合类这六类大问题。本文所有代码在 这里 。 判断类问题主要分下下判断二叉树是否是二叉搜索树、二叉完全树,以及两棵二叉树是否同构这三个问题。 题: 给定一棵…
数据结构与算法 #16 简答一波 HashMap 常见八股面试题
HashMap 是我们熟悉的散列表实现,也是 “面试八股文” 的标准题库之一。今天,我给出一份 HashMap 高频面试题口述简答答案,希望对你刷题有帮助。
数据结构和算法面试题系列—递归算法总结
前面总结了随机算法,这次再把以前写的递归算法的文章梳理一下,这篇文章主要是受到宋劲松老师写的《Linux C编程》的递归章节启发写的。最能体现算法精髓的非递归莫属了,希望这篇文章对初学递归或者对递归有困惑的朋友们能有所帮助,如有错误,也恳请各路大牛指正。二叉树的递归示例代码请参…
数据结构和算法面试题系列—C指针、数组和结构体
在用C语言实现一些常见的数据结构和算法时,C语言的基础不能少,特别是指针和结构体等知识。 linux中的C编译得到的目标文件和可执行文件都是ELF格式的,可执行文件中以segment来划分,目标文件中,我们是以section划分。一个segment包含一个或多个section,…
数据结构和算法面试题系列—随机算法总结
随机算法涉及大量概率论知识,有时候难得去仔细看推导过程,当然能够完全了解推导的过程自然是有好处的,如果不了解推导过程,至少记住结论也是必要的。本文总结最常见的一些随机算法的题目,是几年前找工作的时候写的。需要说明的是,这里用到的随机函数 randInt(a, b) 假定它能随机…
数据结构和算法面试题系列—栈
栈作为一种基本的数据结构,在很多地方有运用,比如函数递归,前后缀表达式转换等。本文会用C数组来实现栈结构(使用链表实现可以参见链表那一节,使用头插法构建链表即可),并对常见的几个跟栈相关的面试题进行分析,本文代码在 这里。 我们使用结构体来定义栈,使用柔性数组来存储元素。几个宏…
数据结构和算法面试题系列—链表
链表作为一种基础的数据结构,在很多地方会用到。如在Linux内核代码,redis源码,python源码中都有使用。除了单向链表,还有双向链表,本文主要关注单向链表(含部分循环链表题目,会在题目中注明,其他情况都是讨论简单的单向链表)。双向链表在redis中有很好的实现,也在我的…
数据结构和算法面试题系列—排序算法之快速排序
快速排序也是基于分治模式,类似归并排序那样,不同的是快速排序划分最后不需要merge。对一个数组 A[p..r] 进行快速排序分为三个步骤: 划分: 数组 A[p...r] 被划分为两个子数组 A[p...q-1] 和 A[q+1...r],使得 A[p...q-1] 中每个元…
数据结构和算法面试题系列—字符串
字符串作为数据结构中的基础内容,也是面试中经常会考察的基本功之一,比如实现 strcpy,strcmp等基本函数等,回文字符串,字符串搜索,正则表达式等。本文相关代码见 这里。 首先来看一些字符串的基本函数的实现,以下代码取自MIT6.828课程。 题: 给定一个字符串,找出该…
数据结构和算法面试题系列—排序算法之基础排序
排序算法也是面试中常常提及的内容,问的最多的应该是快速排序、堆排序。这些排序算法很基础,但是如果平时不怎么写代码的话,面试的时候总会出现各种bug。虽然思想都知道,但是就是写不出来。本文打算对各种排序算法进行一个汇总,包括插入排序、冒泡排序、选择排序、计数排序、归并排序,基数排…
数据结构和算法面试题系列—二叉树基础
在说二叉树前,先来看看什么是树。树中基本单位是结点,结点之间的链接,称为分支。一棵树最上面的结点称之为根节点,而下面的结点为子结点。一个结点可以有0个或多个子结点,没有子结点的结点我们称之为叶结点。 二叉树是指子结点数目不超过2个的树,它是一种很经典的数据结构。而二叉搜索树(B…
数据结构和算法面试题系列—二分查找算法详解
二分查找本身是个简单的算法,但是正是因为其简单,更容易写错。甚至于在二分查找算法刚出现的时候,也是存在bug的(溢出的bug),这个bug直到几十年后才修复(见《编程珠玑》)。本文打算对二分查找算法进行总结,并对由二分查找引申出来的问题进行分析和汇总。若有错误,请指正。本文完整…
数据结构和算法面试题系列—二叉堆
本文要描述的堆是二叉堆。二叉堆是一种数组对象,可以被视为一棵完全二叉树,树中每个结点和数组中存放该结点值的那个元素对应。树的每一层都是填满的,最后一层除外。二叉堆可以用于实现堆排序,优先级队列等。本文代码地址在 这里。 使用数组来实现二叉堆,二叉堆两个属性,其中 LENGTH(…
2026-06-15 周一
💻49 题
💻 算法 · 49题
面试官:你都工作3年了,这个算法题都不会?
金三银四,又到了换工作的最佳时机,我幻想着只要跳个槽,就能离开这个”鸟地方“,拿着更多的钱,干着最爽的事...结果被一道算法题坑了,"有效的括号"使用栈来解,会非常简单.
前端笔试&面试爬坑系列---算法
终于来了,算法相关的。 其实个人理解,前端岗位对于算法的要求与其他IT岗位相比,是低得多的。 但是小白我经历了如蚂蚁金服、网易这样的大厂教做人之后,还是觉得,对于一些基本算法、思想的掌握还是必须的。 然后,就把自己遇到的、学到的算法相关的再总结一下,方便自己随时备战面试。 JS…
【前端词典】有趣的大厂算法面试题
看到一篇算法文章,觉得着实有趣,但不知为何我看到题后首先想到的是田忌赛马。今天我也试着解释下这题,当做是一个学习的过程。 64 匹马分 8 次在全部比完一次,然后我们可以把目标缩小到 32 匹马。 1、八次比完后,我们可以将每一匹马的速度按下表排好。 剩下的 8 组 32 匹马…
面试遇到了算法题?看这篇就够啦。
链表即是由节点(Node)组成的线性集合,每个节点可以利用指针指向其他节点。它是一种包含了多个节点的、能够用于表示序列的数据结构。 单向链表: 链表中的节点仅指向下一个节点,并且最后一个节点指向空。 双向链表: 其中每个节点具有两个指针 p、n,使得 p 指向先前节点并且 n …
👨💻面试官:工作两年了,这么简单的算法题你都不会?
回想以前遇到过的面试官,甚至包括自己作为面试官的时候,大都是停留在问【是什么】的问题上,而很少去追问【为什么】。。。
面试必备:八种排序算法原理及Java实现
1. 概述 排序算法分为内部排序和外部排序,内部排序把数据记录放在内存中进行排序,而外部排序因排序的数据量大,内存不能一次容纳全部的排序记录,所以在排序过程中需要访问外存。 经常提及的八大排序算法指的就是内部排序的八种算法,分别是冒泡排序、快速排序、直接插入排序、希尔排序、简单…
常见的js算法面试题收集,es6实现
持续更新,持续更新...
2024前端高频面试题之-- 数据结构与算法篇
【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 2024前端高频面试题
[算法总结] 13 道题搞定 BAT 面试——字符串
1. KMP 算法 谈到字符串问题,不得不提的就是 KMP 算法,它是用来解决字符串查找的问题,可以在一个字符串(S)中查找一个子串(W)出现的位置。KMP 算法把字符匹配的时间复杂度缩小到 O(m+n) ,而空间复杂度也只有O(m)。因为“暴力搜索”的方法会反复回溯主串,导致…
前端面试遇到的算法题
尽可能的全面正确的解析一个任意 url 的所有参数为 Object,注意边界条件的处理。 请使用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中,并返回第一次出现的位置(找不到返回 -1)。 有一个祖先树状 json 对象,当一个人有一个儿子的时候,其 child …
[算法总结] 20 道题搞定 BAT 面试——二叉树
0. 几个概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密哈~~~ 满二叉树:除最后一层外,每一层上的所有节点都有两个子节点,最后一层都是叶子…
【算法面试】leetcode最常见的150道前端面试题 --- 简单题上(44题)
前言 本文题目选自 LeetCode 精选 TOP 面试题,而这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位)。本文挑选其中所有简单题做归类和解法分析。后续更新所
记一道字节跳动的算法面试题
前几天有个朋友去面试字节跳动,面试官问了他一道链表相关的算法题,不过他一时之间没做出来,就来问了我一下,感觉这道题还不错,拿来讲一讲。 给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一…
基础面试题 — 数据结构与算法
数据结构是对实际问题中的数据元素及相互间的联系的抽象。一般用线性表来表示常用数据结构,线性表分为顺序存储的顺序表和连式存储的链表。 在学习算法之前,必须要了解一些常用数据结构的概念。 栈:一种特殊串联形式的抽象数据类型,可由链表或数组实现,通过链表或数组的栈顶(Top)指针对数…
字节跳动前端面试必备-LeetCode经典面试算法题
2019年马上就要结束了,相信很多童鞋都开始蠢蠢欲动了,寻找新的机会了,但是工作太忙没有时间刷算法题,面试的时候好心虚。这里双手奉上40道LeetCode上经典面试算法题,整理的内容有点长,建议先收藏,慢慢消化,在来年顺利拿到满意的offer。 内容较多,整理不易,希望大家关注…
年终奖,还得是腾讯(含面试算法原题)
腾讯年终奖 什么是真正的好公司? 一年到头,出不了几次裁员等劳务纠纷的吃瓜新闻。 只有到年底了,才因为年终奖远高于行业水平,实在没法低调了,"被迫"上热搜。 最近网友爆料了腾讯头牌部门的年终奖: WX
一文搞懂高频面试题之限流算法,从算法原理到实现,再到对比分析
限流是指在系统面临高并发、大流量请求的情况下,限制新的流量对系统的访问,从而保证系统服务的安全性。常用的限流算法有计数器固定窗口算法、滑动窗口算法、漏斗算法和令牌桶算法,下面将对这几种算法进行分别介绍,并给出具体的实现。本文目录如下,略长,读者可以全文阅读,同样也可以只看感兴趣…
Android复习资料——常见面试算法题汇总(一)
接触 Android 开发也有一段时间了,前段时间便开始想抽空整理一些知识点,通过笔记整理的方式减少自己重复学习的时间成本和提高自身的效率。 本文总结的部分是常见面试算法题,算法题解均有 java 实现。目录可以在右边侧边栏查看跳转。 之后会整理的知识点还会有 java、And…
【算法面试】leetcode最常见的150道前端面试题 --- 简单题下(44题)
本文题目选自 LeetCode 精选 TOP 面试题,这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位)。 上版本部分请参考# 简单题上 二叉树(DFS) 二叉树前
前端妹子失业在家刷题,开发了个leetcode刷题工具,效率直接翻倍!
大家好,我是薇薇,一名沪漂女程序员,年前惨遭被裁,正值在家悲伤抠脚之际,突然看到两位朋友在合谋开发一款刷leetcode的小工具——leetcode-practice…… 下面重点稍微来介绍一下 在神
在vscode中配置LeetCode插件,从此愉快地刷题
大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器。但是没想到在用的时候遇到了一些麻烦,花了一点时间才解决。所以写这篇文章除了给大家安利这个好用的插件之外,也是为了帮助更多的同学避免踩坑。 vscode在工业界鼎鼎大名,被誉为微软少有…
LeetCode 算法题刷题心得(JavaScript)
花了十几天,把《算法》看了一遍。然后重新 AC 了一遍 LeetCode 的题并记录下心得。
「面试必问」leetcode高频题精选
算法一直是大厂前端面试常问的一块,而大家往往准备这方面的面试都是通过leetcode刷题。 我特地整理了几道leetcode中「很有意思」而且非常「高频」的算法题目,分别给出了思路分析(带图解)和代码实现。 给定一个整数数组 nums 和一个目标值 target,请你在该数组中…
leetcode分类刷题-附题号链接
题目分类及刷题顺序推荐 一. 数组 二. 字符串 三. 数与位 四. 栈与递归 五. 链表 六. 哈希表 七. 贪心算法 八. 双指针法 九. 树 十. 图与搜索 十一. 二分查找 十二. 二进制运算
用JavaScript刷LeetCode的正确姿势
虽然很多人都觉得前端算法弱,但其实 JavaScript 也可以刷题啊!最近两个月断断续续刷完了 leetcode 前 200 的 middle + hard ,总结了一些刷题常用的模板代码。走过路过发现 bug 请指出,拯救一个辣鸡(但很帅)的少年就靠您啦! 包括打印函数和一…
耗时3个月,近10W字的刷题笔记,多语言通吃,秒杀 80% Leetcode 题目!
众所周知,现在的互联网公司面试,只要是写代码的岗位,都会来一套算法题组合拳伺候。 所以大家在准备校招、社招,或者闲暇的时候,都可以刷刷题,保持良好的手感。
我是如何刷 LeetCode 的?
我就是那个 @量子位 答案里面提到的“lucifer 小哥哥”。 我本人从开始准备算法以来,大概经过了几个月的时间,这期间自己成长了很多,从刷题菜鸡,到现在对刷题套路,题型有了自己的理解,感受还是蛮多的。我本人不是算法高手,算是勤能补拙类型。不过经过几个月的学习和练习,不仅面试…
LeetCode热题100道-Day01
1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 4. 寻找两个正序数组的中位数 5. 最长回文子串
在 VsCode 中优雅的刷 LeetCode 🔥
leetcode网站中的编程环境,代码提示,快捷键并不友好,我们在刷题的时候往往不高效,且过后也不能快速,随时随地的进行方便的复盘。所以在这篇文章中我将介绍如何在 VsCode 中通过插件来高效的刷题
老司机带你刷 LeetCode
老司机带你刷 LeetCode
LeetCode热题100道-Day02
LeetCode热题100道-Day02 136. 只出现一次的数字 在stream流中的reduce方法使用异或运算。
🚀使用TypeScript刷LeetCode,前端同学刷题新体验
作为一个前端同学,为什么不用JavaScript刷LeetCode,而是使用TypeScript来刷题呢? 当然,你也可以选择c++、java来刷题,但我认为还是用自己研究方向的语言比较好
那些年,面试中常见的数据结构基础和算法题(上) | 掘金技术征文
作为一个多年的老菜鸟,有感于大部分的公司面试 “面试造航母,工作螺丝钉” 的作风,特整理了这个数据结构和算法面试题系列。对于校招而言,如果没有太多实践/实习经验,大公司往往喜欢考察数据结构和算法,如微软就特别喜欢在校招时手写算法题,而且难度还不小,当年我毕业找工作时也是颇受折磨…
数据结构和算法面试题系列—数字题总结
数学是科学之基础,数字题往往也是被面试玩出花来。数学本身是有趣味的一门学科,前段时间有点不务正业,对数学产生了浓厚的兴趣,于是看了几本数学史论的书,也买了《几何原本》和《陶哲轩的实分析》,看了部分章节,受益良多,有兴趣的朋友可以看看。特别是几何原本,欧几里得上千年前的著作,里面…
500 个数据结构及算法的面试题及答案
500 Data structures and algorithms interview questions and their solutions
数据结构和算法面试题系列—背包问题总结
背包问题包括0-1背包问题、完全背包问题、部分背包问题等多种变种。其中,最简单的是部分背包问题,它可以采用贪心法来解决,而其他几种背包问题往往需要动态规划来求解。本文主要来源于《背包问题九讲》,我选择了比较简单的0-1背包问题和完全背包问题进行汇总。同时给出实现代码,如有错误,…
数据结构和算法面试题系列—二叉树面试题汇总
继上一篇总结了二叉树的基础操作后,这一篇文章汇总下常见的二叉树相关面试题,主要分为判断类、构建类、存储类、查找类、距离类、混合类这六类大问题。本文所有代码在 这里 。 判断类问题主要分下下判断二叉树是否是二叉搜索树、二叉完全树,以及两棵二叉树是否同构这三个问题。 题: 给定一棵…
数据结构与算法 #16 简答一波 HashMap 常见八股面试题
HashMap 是我们熟悉的散列表实现,也是 “面试八股文” 的标准题库之一。今天,我给出一份 HashMap 高频面试题口述简答答案,希望对你刷题有帮助。
数据结构和算法面试题系列—递归算法总结
前面总结了随机算法,这次再把以前写的递归算法的文章梳理一下,这篇文章主要是受到宋劲松老师写的《Linux C编程》的递归章节启发写的。最能体现算法精髓的非递归莫属了,希望这篇文章对初学递归或者对递归有困惑的朋友们能有所帮助,如有错误,也恳请各路大牛指正。二叉树的递归示例代码请参…
数据结构和算法面试题系列—C指针、数组和结构体
在用C语言实现一些常见的数据结构和算法时,C语言的基础不能少,特别是指针和结构体等知识。 linux中的C编译得到的目标文件和可执行文件都是ELF格式的,可执行文件中以segment来划分,目标文件中,我们是以section划分。一个segment包含一个或多个section,…
数据结构和算法面试题系列—随机算法总结
随机算法涉及大量概率论知识,有时候难得去仔细看推导过程,当然能够完全了解推导的过程自然是有好处的,如果不了解推导过程,至少记住结论也是必要的。本文总结最常见的一些随机算法的题目,是几年前找工作的时候写的。需要说明的是,这里用到的随机函数 randInt(a, b) 假定它能随机…
数据结构和算法面试题系列—栈
栈作为一种基本的数据结构,在很多地方有运用,比如函数递归,前后缀表达式转换等。本文会用C数组来实现栈结构(使用链表实现可以参见链表那一节,使用头插法构建链表即可),并对常见的几个跟栈相关的面试题进行分析,本文代码在 这里。 我们使用结构体来定义栈,使用柔性数组来存储元素。几个宏…
数据结构和算法面试题系列—链表
链表作为一种基础的数据结构,在很多地方会用到。如在Linux内核代码,redis源码,python源码中都有使用。除了单向链表,还有双向链表,本文主要关注单向链表(含部分循环链表题目,会在题目中注明,其他情况都是讨论简单的单向链表)。双向链表在redis中有很好的实现,也在我的…
数据结构和算法面试题系列—排序算法之快速排序
快速排序也是基于分治模式,类似归并排序那样,不同的是快速排序划分最后不需要merge。对一个数组 A[p..r] 进行快速排序分为三个步骤: 划分: 数组 A[p...r] 被划分为两个子数组 A[p...q-1] 和 A[q+1...r],使得 A[p...q-1] 中每个元…
数据结构和算法面试题系列—字符串
字符串作为数据结构中的基础内容,也是面试中经常会考察的基本功之一,比如实现 strcpy,strcmp等基本函数等,回文字符串,字符串搜索,正则表达式等。本文相关代码见 这里。 首先来看一些字符串的基本函数的实现,以下代码取自MIT6.828课程。 题: 给定一个字符串,找出该…
数据结构和算法面试题系列—排序算法之基础排序
排序算法也是面试中常常提及的内容,问的最多的应该是快速排序、堆排序。这些排序算法很基础,但是如果平时不怎么写代码的话,面试的时候总会出现各种bug。虽然思想都知道,但是就是写不出来。本文打算对各种排序算法进行一个汇总,包括插入排序、冒泡排序、选择排序、计数排序、归并排序,基数排…
数据结构和算法面试题系列—二叉树基础
在说二叉树前,先来看看什么是树。树中基本单位是结点,结点之间的链接,称为分支。一棵树最上面的结点称之为根节点,而下面的结点为子结点。一个结点可以有0个或多个子结点,没有子结点的结点我们称之为叶结点。 二叉树是指子结点数目不超过2个的树,它是一种很经典的数据结构。而二叉搜索树(B…
数据结构和算法面试题系列—二分查找算法详解
二分查找本身是个简单的算法,但是正是因为其简单,更容易写错。甚至于在二分查找算法刚出现的时候,也是存在bug的(溢出的bug),这个bug直到几十年后才修复(见《编程珠玑》)。本文打算对二分查找算法进行总结,并对由二分查找引申出来的问题进行分析和汇总。若有错误,请指正。本文完整…
数据结构和算法面试题系列—二叉堆
本文要描述的堆是二叉堆。二叉堆是一种数组对象,可以被视为一棵完全二叉树,树中每个结点和数组中存放该结点值的那个元素对应。树的每一层都是填满的,最后一层除外。二叉堆可以用于实现堆排序,优先级队列等。本文代码地址在 这里。 使用数组来实现二叉堆,二叉堆两个属性,其中 LENGTH(…
2026-06-14 周日
💻50 题
💻 算法 · 50题
面试官:你都工作3年了,这个算法题都不会?
金三银四,又到了换工作的最佳时机,我幻想着只要跳个槽,就能离开这个”鸟地方“,拿着更多的钱,干着最爽的事...结果被一道算法题坑了,"有效的括号"使用栈来解,会非常简单.
前端笔试&面试爬坑系列---算法
终于来了,算法相关的。 其实个人理解,前端岗位对于算法的要求与其他IT岗位相比,是低得多的。 但是小白我经历了如蚂蚁金服、网易这样的大厂教做人之后,还是觉得,对于一些基本算法、思想的掌握还是必须的。 然后,就把自己遇到的、学到的算法相关的再总结一下,方便自己随时备战面试。 JS…
【前端词典】有趣的大厂算法面试题
看到一篇算法文章,觉得着实有趣,但不知为何我看到题后首先想到的是田忌赛马。今天我也试着解释下这题,当做是一个学习的过程。 64 匹马分 8 次在全部比完一次,然后我们可以把目标缩小到 32 匹马。 1、八次比完后,我们可以将每一匹马的速度按下表排好。 剩下的 8 组 32 匹马…
面试遇到了算法题?看这篇就够啦。
链表即是由节点(Node)组成的线性集合,每个节点可以利用指针指向其他节点。它是一种包含了多个节点的、能够用于表示序列的数据结构。 单向链表: 链表中的节点仅指向下一个节点,并且最后一个节点指向空。 双向链表: 其中每个节点具有两个指针 p、n,使得 p 指向先前节点并且 n …
👨💻面试官:工作两年了,这么简单的算法题你都不会?
回想以前遇到过的面试官,甚至包括自己作为面试官的时候,大都是停留在问【是什么】的问题上,而很少去追问【为什么】。。。
面试必备:八种排序算法原理及Java实现
1. 概述 排序算法分为内部排序和外部排序,内部排序把数据记录放在内存中进行排序,而外部排序因排序的数据量大,内存不能一次容纳全部的排序记录,所以在排序过程中需要访问外存。 经常提及的八大排序算法指的就是内部排序的八种算法,分别是冒泡排序、快速排序、直接插入排序、希尔排序、简单…
常见的js算法面试题收集,es6实现
持续更新,持续更新...
2024前端高频面试题之-- 数据结构与算法篇
【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 2024前端高频面试题
[算法总结] 13 道题搞定 BAT 面试——字符串
1. KMP 算法 谈到字符串问题,不得不提的就是 KMP 算法,它是用来解决字符串查找的问题,可以在一个字符串(S)中查找一个子串(W)出现的位置。KMP 算法把字符匹配的时间复杂度缩小到 O(m+n) ,而空间复杂度也只有O(m)。因为“暴力搜索”的方法会反复回溯主串,导致…
前端面试遇到的算法题
尽可能的全面正确的解析一个任意 url 的所有参数为 Object,注意边界条件的处理。 请使用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中,并返回第一次出现的位置(找不到返回 -1)。 有一个祖先树状 json 对象,当一个人有一个儿子的时候,其 child …
[算法总结] 20 道题搞定 BAT 面试——二叉树
0. 几个概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密哈~~~ 满二叉树:除最后一层外,每一层上的所有节点都有两个子节点,最后一层都是叶子…
【算法面试】leetcode最常见的150道前端面试题 --- 简单题上(44题)
前言 本文题目选自 LeetCode 精选 TOP 面试题,而这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位)。本文挑选其中所有简单题做归类和解法分析。后续更新所
记一道字节跳动的算法面试题
前几天有个朋友去面试字节跳动,面试官问了他一道链表相关的算法题,不过他一时之间没做出来,就来问了我一下,感觉这道题还不错,拿来讲一讲。 给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一…
基础面试题 — 数据结构与算法
数据结构是对实际问题中的数据元素及相互间的联系的抽象。一般用线性表来表示常用数据结构,线性表分为顺序存储的顺序表和连式存储的链表。 在学习算法之前,必须要了解一些常用数据结构的概念。 栈:一种特殊串联形式的抽象数据类型,可由链表或数组实现,通过链表或数组的栈顶(Top)指针对数…
字节跳动前端面试必备-LeetCode经典面试算法题
2019年马上就要结束了,相信很多童鞋都开始蠢蠢欲动了,寻找新的机会了,但是工作太忙没有时间刷算法题,面试的时候好心虚。这里双手奉上40道LeetCode上经典面试算法题,整理的内容有点长,建议先收藏,慢慢消化,在来年顺利拿到满意的offer。 内容较多,整理不易,希望大家关注…
年终奖,还得是腾讯(含面试算法原题)
腾讯年终奖 什么是真正的好公司? 一年到头,出不了几次裁员等劳务纠纷的吃瓜新闻。 只有到年底了,才因为年终奖远高于行业水平,实在没法低调了,"被迫"上热搜。 最近网友爆料了腾讯头牌部门的年终奖: WX
一文搞懂高频面试题之限流算法,从算法原理到实现,再到对比分析
限流是指在系统面临高并发、大流量请求的情况下,限制新的流量对系统的访问,从而保证系统服务的安全性。常用的限流算法有计数器固定窗口算法、滑动窗口算法、漏斗算法和令牌桶算法,下面将对这几种算法进行分别介绍,并给出具体的实现。本文目录如下,略长,读者可以全文阅读,同样也可以只看感兴趣…
Android复习资料——常见面试算法题汇总(一)
接触 Android 开发也有一段时间了,前段时间便开始想抽空整理一些知识点,通过笔记整理的方式减少自己重复学习的时间成本和提高自身的效率。 本文总结的部分是常见面试算法题,算法题解均有 java 实现。目录可以在右边侧边栏查看跳转。 之后会整理的知识点还会有 java、And…
【算法面试】leetcode最常见的150道前端面试题 --- 简单题下(44题)
本文题目选自 LeetCode 精选 TOP 面试题,这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位)。 上版本部分请参考# 简单题上 二叉树(DFS) 二叉树前
前端跳槽面试算法——动态规划
众所周知,与后台开发人员相比,算法是我们前端开发人员的一个弱项。 而近两年随着互联网行业竞争愈发激烈,市场上对前端岗位的算法要求也有一定的提升。 我记得大三参加腾讯的校招面试时只准备了几种常见的排序算法就足以应对了,然而今年包括今日头条在内的多家大厂的前端笔试题目中都出现了"贪…
前端妹子失业在家刷题,开发了个leetcode刷题工具,效率直接翻倍!
大家好,我是薇薇,一名沪漂女程序员,年前惨遭被裁,正值在家悲伤抠脚之际,突然看到两位朋友在合谋开发一款刷leetcode的小工具——leetcode-practice…… 下面重点稍微来介绍一下 在神
在vscode中配置LeetCode插件,从此愉快地刷题
大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器。但是没想到在用的时候遇到了一些麻烦,花了一点时间才解决。所以写这篇文章除了给大家安利这个好用的插件之外,也是为了帮助更多的同学避免踩坑。 vscode在工业界鼎鼎大名,被誉为微软少有…
LeetCode 算法题刷题心得(JavaScript)
花了十几天,把《算法》看了一遍。然后重新 AC 了一遍 LeetCode 的题并记录下心得。
「面试必问」leetcode高频题精选
算法一直是大厂前端面试常问的一块,而大家往往准备这方面的面试都是通过leetcode刷题。 我特地整理了几道leetcode中「很有意思」而且非常「高频」的算法题目,分别给出了思路分析(带图解)和代码实现。 给定一个整数数组 nums 和一个目标值 target,请你在该数组中…
leetcode分类刷题-附题号链接
题目分类及刷题顺序推荐 一. 数组 二. 字符串 三. 数与位 四. 栈与递归 五. 链表 六. 哈希表 七. 贪心算法 八. 双指针法 九. 树 十. 图与搜索 十一. 二分查找 十二. 二进制运算
用JavaScript刷LeetCode的正确姿势
虽然很多人都觉得前端算法弱,但其实 JavaScript 也可以刷题啊!最近两个月断断续续刷完了 leetcode 前 200 的 middle + hard ,总结了一些刷题常用的模板代码。走过路过发现 bug 请指出,拯救一个辣鸡(但很帅)的少年就靠您啦! 包括打印函数和一…
耗时3个月,近10W字的刷题笔记,多语言通吃,秒杀 80% Leetcode 题目!
众所周知,现在的互联网公司面试,只要是写代码的岗位,都会来一套算法题组合拳伺候。 所以大家在准备校招、社招,或者闲暇的时候,都可以刷刷题,保持良好的手感。
我是如何刷 LeetCode 的?
我就是那个 @量子位 答案里面提到的“lucifer 小哥哥”。 我本人从开始准备算法以来,大概经过了几个月的时间,这期间自己成长了很多,从刷题菜鸡,到现在对刷题套路,题型有了自己的理解,感受还是蛮多的。我本人不是算法高手,算是勤能补拙类型。不过经过几个月的学习和练习,不仅面试…
LeetCode热题100道-Day01
1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 4. 寻找两个正序数组的中位数 5. 最长回文子串
在 VsCode 中优雅的刷 LeetCode 🔥
leetcode网站中的编程环境,代码提示,快捷键并不友好,我们在刷题的时候往往不高效,且过后也不能快速,随时随地的进行方便的复盘。所以在这篇文章中我将介绍如何在 VsCode 中通过插件来高效的刷题
老司机带你刷 LeetCode
老司机带你刷 LeetCode
LeetCode热题100道-Day02
LeetCode热题100道-Day02 136. 只出现一次的数字 在stream流中的reduce方法使用异或运算。
🚀使用TypeScript刷LeetCode,前端同学刷题新体验
作为一个前端同学,为什么不用JavaScript刷LeetCode,而是使用TypeScript来刷题呢? 当然,你也可以选择c++、java来刷题,但我认为还是用自己研究方向的语言比较好
那些年,面试中常见的数据结构基础和算法题(上) | 掘金技术征文
作为一个多年的老菜鸟,有感于大部分的公司面试 “面试造航母,工作螺丝钉” 的作风,特整理了这个数据结构和算法面试题系列。对于校招而言,如果没有太多实践/实习经验,大公司往往喜欢考察数据结构和算法,如微软就特别喜欢在校招时手写算法题,而且难度还不小,当年我毕业找工作时也是颇受折磨…
数据结构和算法面试题系列—数字题总结
数学是科学之基础,数字题往往也是被面试玩出花来。数学本身是有趣味的一门学科,前段时间有点不务正业,对数学产生了浓厚的兴趣,于是看了几本数学史论的书,也买了《几何原本》和《陶哲轩的实分析》,看了部分章节,受益良多,有兴趣的朋友可以看看。特别是几何原本,欧几里得上千年前的著作,里面…
500 个数据结构及算法的面试题及答案
500 Data structures and algorithms interview questions and their solutions
数据结构和算法面试题系列—背包问题总结
背包问题包括0-1背包问题、完全背包问题、部分背包问题等多种变种。其中,最简单的是部分背包问题,它可以采用贪心法来解决,而其他几种背包问题往往需要动态规划来求解。本文主要来源于《背包问题九讲》,我选择了比较简单的0-1背包问题和完全背包问题进行汇总。同时给出实现代码,如有错误,…
数据结构和算法面试题系列—二叉树面试题汇总
继上一篇总结了二叉树的基础操作后,这一篇文章汇总下常见的二叉树相关面试题,主要分为判断类、构建类、存储类、查找类、距离类、混合类这六类大问题。本文所有代码在 这里 。 判断类问题主要分下下判断二叉树是否是二叉搜索树、二叉完全树,以及两棵二叉树是否同构这三个问题。 题: 给定一棵…
数据结构与算法 #16 简答一波 HashMap 常见八股面试题
HashMap 是我们熟悉的散列表实现,也是 “面试八股文” 的标准题库之一。今天,我给出一份 HashMap 高频面试题口述简答答案,希望对你刷题有帮助。
数据结构和算法面试题系列—递归算法总结
前面总结了随机算法,这次再把以前写的递归算法的文章梳理一下,这篇文章主要是受到宋劲松老师写的《Linux C编程》的递归章节启发写的。最能体现算法精髓的非递归莫属了,希望这篇文章对初学递归或者对递归有困惑的朋友们能有所帮助,如有错误,也恳请各路大牛指正。二叉树的递归示例代码请参…
数据结构和算法面试题系列—C指针、数组和结构体
在用C语言实现一些常见的数据结构和算法时,C语言的基础不能少,特别是指针和结构体等知识。 linux中的C编译得到的目标文件和可执行文件都是ELF格式的,可执行文件中以segment来划分,目标文件中,我们是以section划分。一个segment包含一个或多个section,…
数据结构和算法面试题系列—随机算法总结
随机算法涉及大量概率论知识,有时候难得去仔细看推导过程,当然能够完全了解推导的过程自然是有好处的,如果不了解推导过程,至少记住结论也是必要的。本文总结最常见的一些随机算法的题目,是几年前找工作的时候写的。需要说明的是,这里用到的随机函数 randInt(a, b) 假定它能随机…
数据结构和算法面试题系列—栈
栈作为一种基本的数据结构,在很多地方有运用,比如函数递归,前后缀表达式转换等。本文会用C数组来实现栈结构(使用链表实现可以参见链表那一节,使用头插法构建链表即可),并对常见的几个跟栈相关的面试题进行分析,本文代码在 这里。 我们使用结构体来定义栈,使用柔性数组来存储元素。几个宏…
数据结构和算法面试题系列—链表
链表作为一种基础的数据结构,在很多地方会用到。如在Linux内核代码,redis源码,python源码中都有使用。除了单向链表,还有双向链表,本文主要关注单向链表(含部分循环链表题目,会在题目中注明,其他情况都是讨论简单的单向链表)。双向链表在redis中有很好的实现,也在我的…
数据结构和算法面试题系列—排序算法之快速排序
快速排序也是基于分治模式,类似归并排序那样,不同的是快速排序划分最后不需要merge。对一个数组 A[p..r] 进行快速排序分为三个步骤: 划分: 数组 A[p...r] 被划分为两个子数组 A[p...q-1] 和 A[q+1...r],使得 A[p...q-1] 中每个元…
数据结构和算法面试题系列—字符串
字符串作为数据结构中的基础内容,也是面试中经常会考察的基本功之一,比如实现 strcpy,strcmp等基本函数等,回文字符串,字符串搜索,正则表达式等。本文相关代码见 这里。 首先来看一些字符串的基本函数的实现,以下代码取自MIT6.828课程。 题: 给定一个字符串,找出该…
数据结构和算法面试题系列—排序算法之基础排序
排序算法也是面试中常常提及的内容,问的最多的应该是快速排序、堆排序。这些排序算法很基础,但是如果平时不怎么写代码的话,面试的时候总会出现各种bug。虽然思想都知道,但是就是写不出来。本文打算对各种排序算法进行一个汇总,包括插入排序、冒泡排序、选择排序、计数排序、归并排序,基数排…
数据结构和算法面试题系列—二叉树基础
在说二叉树前,先来看看什么是树。树中基本单位是结点,结点之间的链接,称为分支。一棵树最上面的结点称之为根节点,而下面的结点为子结点。一个结点可以有0个或多个子结点,没有子结点的结点我们称之为叶结点。 二叉树是指子结点数目不超过2个的树,它是一种很经典的数据结构。而二叉搜索树(B…
数据结构和算法面试题系列—二分查找算法详解
二分查找本身是个简单的算法,但是正是因为其简单,更容易写错。甚至于在二分查找算法刚出现的时候,也是存在bug的(溢出的bug),这个bug直到几十年后才修复(见《编程珠玑》)。本文打算对二分查找算法进行总结,并对由二分查找引申出来的问题进行分析和汇总。若有错误,请指正。本文完整…
数据结构和算法面试题系列—二叉堆
本文要描述的堆是二叉堆。二叉堆是一种数组对象,可以被视为一棵完全二叉树,树中每个结点和数组中存放该结点值的那个元素对应。树的每一层都是填满的,最后一层除外。二叉堆可以用于实现堆排序,优先级队列等。本文代码地址在 这里。 使用数组来实现二叉堆,二叉堆两个属性,其中 LENGTH(…
2026-06-13 周六
💻2 题
💻 算法 · 2题
LeetCode 3 - 无重复字符的最长子串
给定一个字符串 `s`,请你找出其中不含有重复字符的 **最长子串** 的长度。
**示例 1:**
```
输入:s = "abcabcbb"
输出:3
解释:因为无重复字符的最长子串是 "abc",所以其长度为 3。
```
**示例 2:**
```
输入:s = "bbbbb"
输出:1
解释:因为无重复字符的最长子串是 "b",所以其长度为 1。
```
**示例 3:**
```
输入:s = "pwwkew"
输出:3
解释:因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
```
**约束条件:**
- `0 <= s.length <= 5 * 10^4`
- `s` 由英文字母、数字、符号和空格组成LeetCode 121 - 买卖股票的最佳时机
给定一个数组 `prices`,它的第 `i` 个元素 `prices[i]` 表示一支给定股票第 `i` 天的价格。
你只能选择 **某一天** 买入这只股票,并选择在 **未来的某一个不同的日子** 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 `0`。
**示例 1:**
```
输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
```
**示例 2:**
```
输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下,没有交易完成,所以最大利润为 0。
```
**约束条件:**
- `1 <= prices.length <= 10^5`
- `0 <= prices[i] <= 10^4`
2026-06-12 周五
💻2 题
💻 算法 · 2题
LeetCode 200 - 岛屿数量
给你一个由 `'1'`(陆地)和 `'0'`(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 **示例 1:** ``` 输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"] ] 输出:1 ``` **示例 2:** ``` 输入:grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"] ] 输出:3 ``` **约束条件:** - `m == grid.length` - `n == grid[i].length` - `1 <= m, n <= 300` - `grid[i][j]` 的值为 `'0'` 或 `'1'`
LeetCode 146 - LRU缓存机制
请你设计并实现一个满足 **LRU (最近最少使用) 缓存** 约束的数据结构。
实现 `LRUCache` 类:
- `LRUCache(int capacity)` 以 **正整数** 作为容量 `capacity` 初始化 LRU 缓存
- `int get(int key)` 如果关键字 `key` 存在于缓存中,则返回关键字的值,否则返回 `-1`。
- `void put(int key, int value)` 如果关键字 `key` 已经存在,则变更其数据值 `value`;如果不存在,则向缓存中插入该组 `key-value`。如果插入操作导致关键字数量超过 `capacity`,则应该 **逐出最久未使用的关键字**。
函数 `get` 和 `put` 必须以 `O(1)` 的平均时间复杂度运行。
**示例 1:**
```
输入:
["LRUCache", "put", "put", "get", "put", "get", "put", "get", "get", "get"]
[[2], [1, 1], [2, 2], [1], [3, 3], [2], [4, 4], [1], [3], [4]]
输出:
[null, null, null, 1, null, -1, null, -1, 3, 4]
解释:
LRUCache lRUCache = new LRUCache(2);
lRUCache.put(1, 1); // 缓存是 {1=1}
lRUCache.put(2, 2); // 缓存是 {1=1, 2=2}
lRUCache.get(1); // 返回 1
lRUCache.put(3, 3); // 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}
lRUCache.get(2); // 返回 -1 (未找到)
lRUCache.put(4, 4); // 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}
lRUCache.get(1); // 返回 -1 (未找到)
lRUCache.get(3); // 返回 3
lRUCache.get(4); // 返回 4
```
**约束条件:**
- `1 <= capacity <= 3000`
- `0 <= key <= 10000`
- `0 <= value <= 10^5`
- 最多调用 `2 * 10^5` 次 `get` 和 `put`
2026-05-28 周四
💻1 题
💻 算法 · 1题
LeetCode 46 - 全排列
给定一个不含重复数字的数组 `nums`,返回其所有可能的全排列。你可以 **按任意顺序** 返回答案。 **示例 1:** ``` 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] ``` **示例 2:** ``` 输入:nums = [0,1] 输出:[[0,1],[1,0]] ``` **示例 3:** ``` 输入:nums = [1] 输出:[[1]] ``` **约束条件:** - `1 <= nums.length <= 6` - `-10 <= nums[i] <= 10` - `nums` 中的所有整数互不相同
2026-05-12 周二
💻1 题
💻 算法 · 1题
LeetCode 20 - 有效括号
给定一个只包括 `'('`,`')'`,`'{'`,`'}'`,`'['`,`']'` 的字符串 `s`,判断字符串是否有效。
有效字符串需满足:
1. 左括号必须用相同类型的右括号闭合。
2. 左括号必须以正确的顺序闭合。
3. 每个右括号都有一个对应的相同类型的左括号。
**示例 1:**
```
输入:s = "()"
输出:true
```
**示例 2:**
```
输入:s = "()[]{}"
输出:true
```
**示例 3:**
```
输入:s = "(]"
输出:false
```
**约束条件:**
- `1 <= s.length <= 10^4`
- `s` 仅由括号 `'()[]{}'` 组成
2026-04-25 周六
💻1 题
💻 算法 · 1题
LeetCode 239 - 滑动窗口最大值
给你一个整数数组 `nums`,有一个大小为 `k` 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 `k` 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 **示例 1:** ``` 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1 -3 5] 3 6 7 5 1 3 -1 [-3 5 3] 6 7 5 1 3 -1 -3 [5 3 6] 7 6 1 3 -1 -3 5 [3 6 7] 7 ``` **示例 2:** ``` 输入:nums = [1], k = 1 输出:[1] ``` **约束条件:** - `1 <= nums.length <= 10^5` - `-10^4 <= nums[i] <= 10^4` - `1 <= k <= nums.length`
2026-04-10 周五
💻1 题
💻 算法 · 1题
LeetCode 53 - 最大子数组和
给你一个整数数组 `nums`,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 **子数组** 是数组中的一个连续部分。 **示例 1:** ``` 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6。 ``` **示例 2:** ``` 输入:nums = [1] 输出:1 ``` **示例 3:** ``` 输入:nums = [5,4,-1,7,8] 输出:23 ``` **约束条件:** - `1 <= nums.length <= 10^5` - `-10^4 <= nums[i] <= 10^4`
2026-03-22 周日
💻1 题
💻 算法 · 1题
LeetCode 33 - 旋转数组搜索
整数数组 `nums` 按升序排列,数组中的值 **互不相同**。 在传递给函数之前,`nums` 在预先未知的某个下标 `k`(`0 <= k < nums.length`)上进行了 **旋转**,使数组变为 `[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]`。 给你旋转后的数组 `nums` 和一个整数 `target`,如果 `nums` 中存在这个目标值,则返回它的下标,否则返回 `-1`。 你必须设计一个时间复杂度为 `O(log n)` 的算法解决此问题。 **示例 1:** ``` 输入:nums = [4,5,6,7,0,1,2], target = 0 输出:4 ``` **示例 2:** ``` 输入:nums = [4,5,6,7,0,1,2], target = 3 输出:-1 ``` **示例 3:** ``` 输入:nums = [1], target = 0 输出:-1 ``` **约束条件:** - `1 <= nums.length <= 5000` - `-10^4 <= nums[i] <= 10^4` - `nums` 中的每个值都 **独一无二** - 题目数据保证 `nums` 在预先未知的某个下标上进行了旋转 - `-10^4 <= target <= 10^4`
2026-03-07 周六
💻1 题
💻 算法 · 1题
LeetCode 5 - 最长回文子串
给你一个字符串 `s`,找到 `s` 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 **示例 1:** ``` 输入:s = "babad" 输出:"bab" 解释:"aba" 同样也是符合题意的答案。 ``` **示例 2:** ``` 输入:s = "cbbd" 输出:"bb" ``` **约束条件:** - `1 <= s.length <= 1000` - `s` 仅由数字和英文字母组成
2026-02-20 周五
💻1 题
💻 算法 · 1题
LeetCode 102 - 二叉树层序遍历
给你二叉树的根节点 `root`,返回其节点值的 **层序遍历**。(即逐层地,从左到右访问所有节点)。 **示例 1:** ``` 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] ``` **示例 2:** ``` 输入:root = [1] 输出:[[1]] ``` **示例 3:** ``` 输入:root = [] 输出:[] ``` **约束条件:** - 树中节点数目在范围 `[0, 2000]` 内 - `-1000 <= Node.val <= 1000`
2026-02-08 周日
💻1 题
💻 算法 · 1题
LeetCode 215 - 数组第K大
给定整数数组 `nums` 和整数 `k`,请返回数组中第 `k` 个最大的元素。 请注意,你需要找的是数组排序后的第 `k` 个最大的元素,而不是第 `k` 个不同的元素。 你必须设计并实现时间复杂度为 `O(n)` 的算法解决此问题。 **示例 1:** ``` 输入:[3,2,1,5,6,4], k = 2 输出:5 ``` **示例 2:** ``` 输入:[3,2,3,1,2,4,5,5,6], k = 4 输出:4 ``` **约束条件:** - `1 <= k <= nums.length <= 10^5` - `-10^4 <= nums[i] <= 10^4`
2026-01-20 周二
💻1 题
💻 算法 · 1题
LeetCode 206 - 反转链表
给你单链表的头节点 `head`,请你反转链表,并返回反转后的链表。 **示例 1:** ``` 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] ``` **示例 2:** ``` 输入:head = [1,2] 输出:[2,1] ``` **示例 3:** ``` 输入:head = [] 输出:[] ``` **约束条件:** - 链表中节点的数目范围是 `[0, 5000]` - `-5000 <= Node.val <= 5000` **进阶:** 链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
2026-01-06 周二
💻1 题
💻 算法 · 1题
LeetCode 15 - 三数之和
给你一个整数数组 `nums`,判断是否存在三元组 `[nums[i], nums[j], nums[k]]` 满足 `i != j`、`i != k` 且 `j != k`,同时还满足 `nums[i] + nums[j] + nums[k] == 0`。请你返回所有和为 `0` 且不重复的三元组。 **注意:** 答案中不可以包含重复的三元组。 **示例 1:** ``` 输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]] 解释: nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0。 nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0。 nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0。 不同的三元组是 [-1,0,1] 和 [-1,-1,2]。 注意,[-1,-1,2] 是排序后的结果,顺序不重要。 ``` **示例 2:** ``` 输入:nums = [0,1,1] 输出:[] 解释:唯一可能的三元组和不为 0。 ``` **示例 3:** ``` 输入:nums = [0,0,0] 输出:[[0,0,0]] ``` **约束条件:** - `3 <= nums.length <= 3000` - `-10^5 <= nums[i] <= 10^5`