前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全面&详细的面试指南:数据结构与算法篇 (附答案)

全面&详细的面试指南:数据结构与算法篇 (附答案)

作者头像
Carson.Ho
发布2022-03-25 15:55:53
5790
发布2022-03-25 15:55:53
举报
文章被收录于专栏:Android知识分享Android知识分享

前言

  • 背景:算法与数据结构作为技术开发者最基本的技术修养,在面试中出现的频率非常高
  • 本文目的:花尽可能短的时间,快速学习面试中常见常考的数据结构知识及算法题
  • 适用阅读人群:技术岗位面试开发者

本文主要内容:

  1. 常见、常考的数据结构知识
  2. 结合每种数据结构给出常见 & 经典的算法考题
  3. 每个知识点 & 考题都会从题目知识考点、多种思路分析到手写代码整个过程进行详细解析

目录

基础知识

1. 数据结构是什么?

  • 储备知识:数据的定义
  • 定义
  • 具体类型
  • 核心内容

1.1 储备知识:数据是什么

1.2 定义

相互之间存在一种或多种关系的数据元素的集合。

1.3 具体类型

数据结构的具备类型包括2种:逻辑结构、物理结构。

1.4 核心学习内容

主要包括:

  • 排序
  • 线性表:数组、链表、栈与队列
  • 树:含特殊的树,如二叉树、红黑树等
  • 串:如字符串
  • 查找

在后面的章节中,我会详细介绍上述数据结构。

2. 算法是什么?

  • 定义
  • 特点
  • 算法设计要求
  • 常见算法

2.1 定义

解决特定问题的求解步骤(在计算机中表现为多个指令 = 多个步骤操作)。

2.2 特点

  • 可无输入,但一定有输出
  • 步骤有限
  • 确定性:每个步骤有确定含义、不会出现二义

2.3 算法设计要求

算法的设计需考虑以下性能要求:

  • 可行性:即该算法是否 切实 能解决问题
  • 健壮性:即该算法是否能全面解决问题,即 考虑、容纳所有异常逻辑,如输入是0、为空、长度不符合等
  • 时间效率:即该算法是否能 快速 解决问题,此处采用 指标:时间复杂度 来衡量
  • 空间效率:即运行该算法需耗费多少内存空间,此处采用 指标:空间复杂度 来衡量

时间复杂度、空间复杂度介绍如下:

常用数据结构及其算法应用

每类数据结构都会有对应的算法应用场景,具体如下:

具体说明

在下面的章节中,我会:

  • 详细讲解每个算法的应用场景 & 对应经典算法题:知识考点 - 多种思路分析 - 图解算法 - 手写代码
  • 旨在:手把手带你剖析常见的数据结构 & 对应经典算法题

排序

1. 简介

具体请看文章

2. 算法应用

查找

1. 简介

2. 算法应用

对于不同的查找需求场景,会采用不同的查找类型,最终采用的查找方式(查找算法)也有所不同,具体如下

具体请看文章:Carson带你学数据结构:图文详解 - 动态查找、静态查找、散列查找

线性表

线性表主要包括:数组、链表、栈与队列

1. 数组

1.1 简介

  • 存储线性表的数据元素的方式 = 一段地址连续的存储单元
  • 具备:起始位置、数组长度(最大存储容量) & 线性表长度(当前长度),具体如下:

概念

说明

数组长度

存放线性表的空间长度(固定不变)

线性表长度

存放线性表数据元素的长度(动态变化)

地址

存储单元的编号

数组下标

第 i 个元素 = 数组下标第 i-1 的位置

具体请看文章:Carson带你学数据结构:线性表-数组

1.2 算法应用

典型应用1:寻找出现特定次数的数字

典型应用2:寻找符合特定条件的数字

典型应用3:不同类型数组的查找

典型应用4:数组内元素的排列组合

2. 链表

2.1 简介

具体请看文章:Carson带你学数据结构:线性表-链表

2.2 算法应用

典型应用1:寻找链表特定节点

典型应用2:复制 & 删除链表

典型应用3:翻转、合并 & 打印链表

3. 栈与队列

3.1 简介

具体请看文章:Carson带你学数据结构:栈与队列

3.2 算法应用

典型应用1:互相转换

典型应用2:求最大、最小值

1. 简介

2. 存储结构

包括:双亲表示法、孩子表示法、孩子兄弟表示法,具体介绍如下图

3. 树的类型

具体请看文章:

主要应用是二叉树,所以下面主要介绍二叉树算法的应用

4. 算法应用

典型应用1:基础树遍历算法

典型应用2:遍历应用

典型应用3:二叉树结构判断

典型应用4:二叉树查找

典型应用5:二叉树类型变式

1. 简介

2. 存储结构介绍

包括:顺序存储结构 & 链式存储结构

具体请看文章:Carson带你学数据结构:这是一份全面 & 详细的”串“讲解指南

3. 算法应用

典型应用1:字符串转换

典型应用2:字符查找

典型应用3:字符串的排列组合

典型应用4:字符串翻转

典型应用5:字符串匹配判断

1.1 简介

具体请看文章:Carson带你学数据结构:手把手带你了解 ”图“ 所有知识!(含DFS、BFS)

1.2 算法应用

典型应用1:基础遍历

典型应用2:最小生成树

典型应用3:最短路径

至此,关于面试的数据结构算法篇讲解完毕。下面我会对面试内容继续进行讲解

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 目录
  • 基础知识
    • 1. 数据结构是什么?
      • 1.1 储备知识:数据是什么
      • 1.2 定义
      • 1.3 具体类型
      • 1.4 核心学习内容
    • 2. 算法是什么?
      • 2.1 定义
      • 2.2 特点
      • 2.3 算法设计要求
  • 常用数据结构及其算法应用
  • 具体说明
  • 排序
    • 1. 简介
    • 具体请看文章
      • 2. 算法应用
      • 查找
        • 1. 简介
          • 2. 算法应用
          • 线性表
            • 1. 数组
              • 1.1 简介
              • 1.2 算法应用
            • 2. 链表
              • 2.1 简介
              • 2.2 算法应用
            • 3. 栈与队列
              • 3.1 简介
              • 3.2 算法应用
              • 1. 简介
              • 2. 存储结构
              • 3. 树的类型
              • 4. 算法应用
              • 1. 简介
              • 2. 存储结构介绍
              • 3. 算法应用
            • 1.1 简介
              • 1.2 算法应用
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档