博客
关于我
暴打算法:王者级数据结构与LeetCode笔记,一路绿灯杀进字节Java岗
阅读量:338 次
发布时间:2019-03-04

本文共 2432 字,大约阅读时间需要 8 分钟。

导语

2020年,真的还有人认为算法面试只是“面试造火箭,工作拧螺丝”吗?其实不然。算法作为企业筛选程序员的面试方式之一,已被越来越多的企业所采用。尤其是在字节跳动、华为等大厂带动下,算法面试逐渐被认可为一种高效、准确且公平的筛选机制。

优秀的程序员都知道,掌握算法与数据结构不仅仅是为了应付面试,更是提升自身编程水平的重要基础。一个优秀的程序员不一定需要精通所有算法,但如果连基本算法都掌握不了,他很难成为一名优秀的程序员。有个程序员小伙伴曾说:“搬砖 + 算法 = 稳定快速的搬砖。”这句话真有道理。高质量的代码,才能让项目如虎添翼!

算法笔记必读系列

没有系统的知识体系,学习效率往往很低。很多程序员的学习经历就是“知其然,不知其理”。为了帮助大家梳理知识体系,我们整理了以下学习资料,供大家参考和传播。

第一章 动态规划

动态规划设计:最长递增子序列

动态规划是一种解决复杂问题的强大工具。最长递增子序列(LIS)问题就是一个典型的动态规划应用。

经典动态规划:0-1 背包问题

背包问题是动态规划中的经典题目之一,涉及如何在有限的资源下选择最优解。

经典动态规划:完全背包问题

与0-1背包不同,完全背包允许物品的数量无限,需要找到最优的组合。

经典动态规划:子集背包问题

子集背包问题要求找出最大的总价值子集。

经典动态规划:编辑距离

编辑距离问题是动态规划的经典应用之一,涉及如何最小化对字符串进行操作的次数。

经典动态规划:高楼扔鸡蛋

高楼扔鸡蛋问题是一个经典的动态规划应用,假设鸡蛋从高处落下,能碎成k片,求最多能在多少层楼上抛出不碎。

动态规划之子序列问题解题模板

动态规划在解决子序列问题时,通常需要维护当前状态和最优值。

动态规划之博弈问题

博弈论中的许多问题都可以用动态规划来解决,例如NIM游戏。

动态规划之正则表达

动态规划可以扩展到处理正则表达式匹配问题。

动态规划之四键键盘

四键键盘问题需要计算在最短时间内输入“四键”,这是一个经典的动态规划问题。

动态规划之KMP字符匹配算法

KMP算法的时间复杂度可以通过预处理和滑动窗口技术将其优化到O(n)。

贪心算法之区间调度问题

贪心算法在调度问题中的应用可以解决一些动态规划难以处理的问题。

团灭LeetCode:股票买卖问题

这是一个经典的贪心问题,可以用多种方法解决,但动态规划方法是最直观的。

团灭LeetCode:打家劫舍问题

打家劫舍问题是一个经典的动态规划问题,需要在有限的时间内最大化偷取的财物。

第二章 算法思维系列

回溯算法团灭子集、排列、组合问题

回溯算法在解决子集、排列、组合等问题时非常有效。

回溯算法最佳实践:解数独

数独问题可以通过回溯算法和约束优化来解决。

回溯算法最佳实践:括号生成

生成有效的括号序列可以用回溯算法来解决。

滑动窗口技巧

滑动窗口是一种高效的算法设计模式,常用于解决数组问题。

twoSum问题的核心思想

twoSum问题是回溯算法和滑动窗口常用的组合问题。

常用的位操作

位操作是算法中的一个重要工具,可以快速解决一些复杂问题。

拆解复杂问题:实现计算器

计算器的设计需要解决多个问题,可以用回溯算法和递归来实现。

烧饼排序

烧饼排序问题可以用贪心算法和递归来解决。

前缀和技巧

前缀和技术可以帮助我们快速解决一些数学问题。

字符串乘法

字符串乘法问题可以通过动态规划解决。

FloodFill算法详解及应用

FloodFill算法是一种扩展版本的深度优先搜索,可以用来解决多种问题。

区间调度之区间合并问题

区间合并问题可以通过动态规划和贪心算法解决。

区间调度之区间交集问题

区间交集问题可以通过贪心算法解决。

信封嵌套问题

信封嵌套问题可以用贪心算法解决。

几个反直觉的概率问题

概率问题中有些问题看似复杂,实际上可以通过巧妙的算法解决。

洗牌算法

洗牌算法是一种高效的排序方法,可以用来解决一些特殊的排序问题。

递归详解

递归是一种强大的编程技巧,可以用来解决复杂的问题。

第三章 高频面试系列

如何高效寻找素数

寻找素数的算法可以通过筛法和分治法解决。

如何高效进行模幂运算

模幂运算可以通过快速幂算法优化。

如何运用二分查找算法

二分查找是一种高效的搜索算法,常用于排序数组中的元素。

如何高效解决接雨水问题

接雨水问题可以通过贪心算法和动态规划解决。

如何去除有序数组的重复元素

有序数组去重可以通过单指针技巧解决。

如何寻找最长回文子串

最长回文子串可以通过扩展搜索法解决。

如何运用贪心思想玩跳跃游戏

跳跃游戏问题可以通过贪心算法解决。

如何k个一组反转链表

反转链表可以通过分组反转和递归解决。

如何判定括号合法性

括号合法性可以通过栈结构解决。

如何寻找缺失的元素

寻找缺失元素可以用数学方法或二分查找解决。

如何同时寻找缺失和重复的元素

缺失和重复元素的问题可以用一次遍历解决。

如何判断回文链表

回文链表可以通过双指针和逆序遍历解决。

如何在无限序列中随机抽取元素

无限序列的随机抽取可以用哈希表和随机数解决。

如何调度考生的座位

考生座位调度可以用贪心算法和堆结构解决。

Union-Find算法详解

Union-Find算法是一种高效的并查集数据结构,广泛应用于解决复杂问题。

Union-Find算法应用

Union-Find算法可以用来解决多个问题,如并查集和找循环在数组中的问题。

一行代码就能解决的算法题

有一些算法题可以通过巧妙的算法和优化在一行代码内解决。

二分查找高效判定子序列

二分查找可以用来高效判断子序列是否存在。

数据结构与排序篇

以下是数据结构与排序相关的核心内容,帮助大家快速掌握相关知识点。

最后

以上文章中提到的所有文档资料均为免费分享。如需要获取更多学习资源,请帮助转发本文并关注我们的助理vx:yunduoa2019,或扫描下方二维码,获取更多学习资源和学习指引。

转载地址:http://odfe.baihongyu.com/

你可能感兴趣的文章
NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
查看>>
NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道
查看>>
NLP:使用 SciKit Learn 的文本矢量化方法
查看>>
nmap 使用方法详细介绍
查看>>
Nmap扫描教程之Nmap基础知识
查看>>
nmap指纹识别要点以及又快又准之方法
查看>>
Nmap渗透测试指南之指纹识别与探测、伺机而动
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
NMAP网络扫描工具的安装与使用
查看>>
NMF(非负矩阵分解)
查看>>
nmon_x86_64_centos7工具如何使用
查看>>
NN&DL4.1 Deep L-layer neural network简介
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>
NN&DL4.7 Parameters vs Hyperparameters
查看>>
NN&DL4.8 What does this have to do with the brain?
查看>>
nnU-Net 终极指南
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
NO 157 去掉禅道访问地址中的zentao
查看>>
no available service ‘default‘ found, please make sure registry config corre seata
查看>>
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
查看>>