校招刷题指南

本文强调编程题训练对逻辑思维的重要性,推荐分类型和难度逐步刷题,从数据结构开始,如数组、字符串、哈希表和链表,涉及递归、虚拟头节点等技巧。同时涵盖二叉树遍历、动态规划、图论算法等内容,强调理解和实操结合,以提升编程水平。
摘要由CSDN通过智能技术生成

编程题训练逻辑思维能力,这是程序员需要具备的核心能力。校招还是比较看重算法能力的,刷题时建议分类型刷,先做简单题,再做比较困难的题;先刷数据结构相关的,然后是剑指offer的其他题目;刷题过程中应努力发现题目间的关联,从中总结出该类题型的一些模板或通法。刷题过程中只看重我理解了该解法,或是只看重我把这个题目做出来了,都是不对的,应该理解和实操并重,这样就能达到只刷少量经典题就能迅速提升自己编程水平的效果。

模块篇

模块篇这部分,同学们按照自己掌握的知识点去找对应知识模块的题目去联系即可

数据结构篇

数组、字符串、哈希表

数组、字符串、哈希表作为最常使用的数据结构,往往大部分问题都会用到,编程语言也提供了大量的api可供调用,我们应熟悉用循环的方式访问并操作这些数据结构,通过这些题目的练习,熟悉最基本的循环语句的写法。

https://www.nowcoder.com/practice/55fb3c68d08d46119f76ae2df7566880

https://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711

https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4

https://www.nowcoder.com/practice/3d8d6a8e516e4633a2244d2934e5aa47

https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4

链表

链表题目的核心在于链表的遍历,我们应熟悉迭代遍历链表的思路,另外链表也具有天然的递归性,所以递归的方式也能遍历链表,会给链表的问题带来一些巧妙和简洁的解法。除此之外,应关注链表的问题中经常使用的虚拟头节点、双指针等技巧。

反转链表

合并两个排序的链表

合并k个已排序的链表

判断链表中是否有环

链表中环的入口结点

链表中倒数第k个结点

链表相加

判断一个链表是否为回文结构

二叉树

二叉树的重点依然在于二叉树的遍历,应熟悉二叉树的几种遍历方式,以及那些特殊的二叉树的性质、如堆、BST树、AVL树等。二叉树的题目应充分利用递归,把问题分解为子问题,相信做完这些题目后,就能熟悉递归了

按之字形顺序打印二叉树

二叉树的最大深度

二叉树中和为某一值的路径(一)

二叉搜索树与双向链表

判断是不是二叉搜索树

判断是不是平衡二叉树

在二叉树中找到两个节点的最近公共祖先

重建二叉树

栈与队列

我们需要了解栈与队列这两个线性数据结构的性质,并充分利用这些性质解决问题。

用两个栈实现队列

表达式求值

寻找第K大

数据流中的中位数

算法篇

算法公开课+优选算法课(视频+答案的形式)

查找和排序

查找和排序是最基础的算法了,需要在面试场景下能熟练的写出那几种排序算法和二分查找的代码。并通过这两类经典的算法问题理解算法设计中的时间复杂度等概念,熟悉分而治之、设计新的数据结构以及二分排除 等解决问题的常见计算机思维。

二分查找

二维数组中的查找

数组中的逆序对

寻找峰值

最小的K个数

动态规划

对于形如已知f(1)=1,f(n)-f(n-1)=1,求f(n)的题目,我们高中时所学的数学方法,往往是想办法求出f(n)关于n的公式,比如上题就是得出f(n)=n+1,然后把n带入n+1就能求出f(n)的值,但得益于计算机强大的运算速度和存储能力,编程解决此类问题的方法往往是根据f(1)和递推公式求出f(2),然后把f(2)存下来。接下来下一轮循环就能用保存的f(2),计算出f(3)了,直到计算出f(n),我们把这种方法叫动态规划,上文中的f(n)-f(n-1)=1则称为状态转移方程。

青蛙跳台阶

不同路径的数目

兑换零钱

最长回文子串

最长上升子序列

矩阵的最小路径和

背包问题

编辑距离

回溯

我们经常会遇到需要在递归调用的上下文之间传递状态的问题,对于简单的情况,我们可以通过递归函数的传参来传递这种状态,但复杂情况下,我们就需要在递归函数中用额外代码维持那个状态了,我们把这种方式称为回溯。

没有重复项数字的全排列

岛屿数量

N皇后问题

二叉树中和为某一值的路径(二)

图论算法

对于链表和树这种数据结构,我们更关心对象的存储和查询,但对于图这种数据结构,我们更关心节点之间的拓扑关系,我们应熟悉在图中找最短路径、最小生成树的算法

最短路径

最小生成树

其他算法

除了上述解决编程问题的常见思路之外,面试中遇到新题,还有一些其他的考虑问题的角度,包括贪心、数学方法、模拟方法、位运算、前缀和等,此处给出常见问题。

分糖果问题

约瑟夫环

数组中只出现一次的两个数字

设计LRU缓存结构

哈夫曼树

综合篇

刷完上面的题目之后,同学们基本也有了一定的代码基础和算法思路,那么接下来,就可以综合刷题,可以刷下面这里的算法,这里同学们可以先刷简单的,再刷中等的

简单28道

有效的括号

对称二叉树

统计一个数字在数组中出现的次数

排序数组中两个数字之和

查找插入位置

左右两边子数组的和相等

将有序列表转换为二叉搜索树

设计哈希映射

找到小镇法官

判断字符是否唯一

返回倒数第K个节点

栈的最小值

三合一

BiNode

快乐数

有效字母异味

删除重复的电子邮箱

各位相加

左子树之和

验证外星语词典

数组拆分

最长和谐子序列

删列造序

删除最外层括号

整数的各位积和之差

括号的最大嵌套深度

反转字符串

机器人能否返回原点

中等(21道)

链表求和

栈排序

括号

旋转矩阵

特定深度节点链表

递归乘法

二叉树层序遍历

最小栈

完全平方数

不同的二插搜索树

打家劫舍

最长递增子序列

为运算表达式设计优先级

两个字符串的删除操作

颜色分类

最长特殊序列

电话号码字母组合

矩阵置零

第K个最小素数分数

最大平均值和的分组

子集

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

念君思宁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值