校招刷题指南

编程题训练逻辑思维能力,这是程序员需要具备的核心能力。校招还是比较看重算法能力的,刷题时建议分类型刷,先做简单题,再做比较困难的题;先刷数据结构相关的,然后是剑指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个最小素数分数

最大平均值和的分组

子集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/434781.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3分钟,学会一个测试员必懂 Lambda 小知识!

今天再来给大家介绍下函数式接口和方法引用。 前言 函数式接口 问:Lambda 表达式的类型是什么? 答:函数式接口 问:函数式接口是什么? 答:只包含一个抽象方法的接口,称为函数式接口 &#xf…

《合成孔径雷达成像算法与实现》Figure5.19

clc clear close all距离向参数 R_eta_c 20e3; % 景中心斜距 Tr 25e-6; % 发射脉冲时宽 Kr 0.25e12; % 距离向调频率 Fr 7.5e6; % 距离向采样率 Nrg 256; % 距离线采样点数 Bw abs(Kr*Tr); …

图像处理常用算法介绍

此篇简单回顾下图像处理领域常用到的一些算法,这边只对每个知识点重要的点做一些记录,便于快速的知其形,会其意。 一. SIFT(Scale-Invariant feature transform)特征 重点是了解DOG(Difference of Gaussian)高斯差分图像是如何生…

如何解决Flutter应用程序的兼容性问题

随着移动应用开发领域的不断发展,Flutter作为一种跨平台框架,受到了越来越多开发者的青睐。要确保Flutter应用程序能够在不同的设备和操作系统上稳定运行,并提供一致的用户体验,我们需要重视应用程序的兼容性问题。下面将简单的介…

C++多态深度剖析

文章目录 1. 前言2. 多态的概念及定义2.1 概念2.2 多态的构成条件2.3 虚函数2.4 虚函数的重写2.5 override 和 final2.5 重载、覆盖(重写)、隐藏(重定义)的对比 3. 抽象类3.1 概念3.2 接口继承和实现继承 4. 多态的原理4.1 虚函数表4.2 多态的原理4.3 动…

计算机二级C语言的注意事项及相应真题-6-程序填空

目录 51.将参数num按升序插入到数组xx中52.在数组中找出两科成绩之和最高的学生并返回其在数组中的下标53.删除所有串长超过k的字符串,输出剩下的字符串54.根据所给的一组学生的成绩,计算出平均成绩,并计算低于平均成绩的学生的平均成绩55.将…

C语言指针数组的一篇补充

这段代码是我今早在想指针数组应该怎么去了解清楚的时候想到的一个代码,纠结了1半个多小时将代码理清楚,分享给大家看一下,对我最近发布的博文应该有一个补充帮助理解的作用。 对于这段代码的解释: 要正确理解指针数组是一个数组&…

直线拟合(支持任意维空间的直线拟合,附代码)

文章目录 一、问题描述二、推导步骤三、 M A T L A B MATLAB MATLAB代码 一、问题描述 给定一系列的三维空间点 ( x i , y i , z i ) , i 1 , 2 , . . . , n (x_i,y_i,z_i),i1,2,...,n (xi​,yi​,zi​),i1,2,...,n,拟合得到直线的方程。本文的直线拟合方法适用于任…

深度学习之处理多维特征的输入

我们首先来看一个糖尿病的数据集: 在数据集中,我们称每一行叫做sample,表示一个样本,称每一列是feature,也就是特征在数据库里面这就是一个关系表,每一行叫做记录,每一列叫做字段。 每一个样本都…

node.js Redis SETNX命令实现分布式锁解决超卖/定时任务重复执行问题

Redis SETNX 特性 当然,让我们通过一个简单的例子,使用 Redis CLI(命令行界面)来模拟获取锁和释放锁的过程。 在此示例中,我将使用键“lock:tcaccount_[pk]”和“status:tcaccount_[pk]”分别表示锁定键和状态键。 获…

java关键字概述——final及常量概述

前言: 打好基础,daydayup! final final概述 final关键字是最终的意思,可以修饰(类,方法,变量) final作用 修饰类:该类被称为最终类,特点为不能被继承 修饰方法&#xff…

Git常用命令介绍

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目 一、Git的安装 安装包下载地址:https://gitforwindows.org/ 国内的镜像地址:https://npm.taobao.org/mirrors/git-for-windows/ 完成安装之后,在开…