【搞定算法】常见算法题分类总览

博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java 一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。

完善中......

由于本人平时刷题比较零散,有时候找起来不是很方便,所以统一将题目记录于此。主要的题目来源自:剑指 Offer、LeetCode、左神算法、面试、笔试、面经等等。下面按照分类记录:

说明(个人见解):

一、标注说明

标注手撕:必须掌握,熟练写出 code;

标注星号:星号越多越重要;

标注加分:一般此类都是算法不容易实现,但是需要掌握思想,面试加分。

二、刷题顺序

1、了解基本的数据结构与算法的知识:

  • 常用的数据结构:数组、链表、栈、队列、哈希表、树、图等的基本概念和实现;
  • 常用的算法:DFS / BFS、最短路径算法(Dijkstra)、贪心算法、动态规划、蓄水池算法、Manacher 算法等;
  • 常用的编程技巧:递归:递归非常重要,要认真理解递归的过程;

2、《剑指Offer》:

《剑指Offer》非常重要,可以看各大公司的面经,很多手撕代码都出自于《剑指Offer》,所以多刷几遍,每一题都务必能快速的手写出来。

3、LeetCode:

《剑指Offer》刷完了,可以先刷 LeetCode 的 Top100,当然你也可以根据自身的情况,刷自己薄弱的专题。大部分公司的笔试题都是出自于 LeetCode,原题或者改编,重要性就不用多说了;

4、左神算法班:

这个因人而异了,如果你对算法题比较敏感,这个阶段是可以跳过的。但是如果对算法不是很有信心或者准备的比较晚,还是比较推荐左神的算法班,分为初级和高级,会串讲基本的数据结构和对应的题目。

5、最后:

算法的重要性:得算法者得 Offer。大公司非常看重算法,即便内推,但是面试环节几乎都会手撕代码,如果这个环节出了问题,会大打折扣。


一、基础数据结构篇

 

排序

 

归并排序

 

 

查找

1、二分查找递归和非递归实现

 

 

 

前缀树

1、前缀树的结构实现

 


二、实战篇

1、数组

1、找出数组中出现次数大于数组长度一半和 N / K 的数【剑指Offer + 左神】【手撕】

2、数组的奇偶位置问题:给定一个整型数组,请在原地调整这个数组,保证要么偶数位置上都是偶数,或者奇数位置上都是奇数。

3、调整数组顺序使奇数位于偶数前面【剑指Offer】【手撕】

4、数组的度(字节跳动面试题 + LeetCode)

5、求一个数组中的第 k 小 / 大的数【BFPRT 算法、快排】【手撕】

6、将一个整数数组划分为K个相等的子集问题【LeetCode + 字节跳动面试题】

7、旋转数组中的最小数字【剑指Offer】

8、在二维数组中查找一个数【剑指Offer】

9、找出数组中重复的数字【剑指Offer】

10、找出数组中只出现一次的那个数,其他都出现两次【字节跳动面试题】

11、子数组问题:在条件下,每一个位置的元素都会作为子数组的开头或者结尾元素,那么遍历完整个数组,结果一定在其中

  1. 子数组最大累乘积:给定一个 double 类型的数组 arr,其中的元素可正、可负、可 0,返回子数组累乘的最大乘积。
  2. 需要排序的最短子数组长度
  3. 最长的可整合子数组的长度
  4. 最短无序连续子数组:双指针实现【LeetCode】
  5. 连续子数组的最大和【剑指Offer】:推荐动态规划实现【手撕】

2、字符串

1、字符串的排列与组合【手撕】

2、最长回文子串:暴力+动态规划+Manacher算法【手撕:推荐用动态规划】

3、正则表达式匹配:实现一个函数用来匹配包括'.'和'*'的正则表达式【剑指Offer】

  • 46
    点赞
  • 329
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值