面试算法-数据结构二

news2024/11/26 10:24:17

大厂算法面试

1) 图论

2) 大数据

3)动态规划

优秀的算法往往取决于你采取那种数据结构

高级数据结构

1)优先队列

2)图

3)前缀树

4)线段树

5)树状数组

在分析问题的时候,回归本质,迎刃而解

优先队列

与普通队列的区别:
1)保证每次取出的元素是队列中优先级别最高的
2)优先级别可以定义

最常用的场景

从杂乱无章的数据中按一定的顺序筛选数据

本质
二叉堆结构,Binary Heap ,利用一个数组结构来实现完全二叉树

image.png
优先队列的基本操作就俩个
1)向上筛选

插入元素的时候,新元素放在树的尾部,不断向上筛选

2)向下筛选

堆顶的元素被取出时候,将堆底部的元素放入堆顶部,不断向下筛选

优先队列初始化:(最重要的时间复杂度)O(n)

image.png

解决办法:(前K个)
1)如何定义优先级
2)以前数据结构

最基本的知识点:

1)阶,度
2)树,森林,环
3)有向图,无向图,完全有向图,完全无向图
4)连通图,连通分量

图的存储和表达方式:
邻接矩阵 ,邻接链表

围绕图的算法:
图的遍历: 深度优先,广度优先
环的检测:有向图,无向图
拓扑排序
最短路算法:Dijkstra ,Bellman-Ford ,Floyd Warshall
连通性相关的算法:Kosaraju ,Tarjan ,求解孤岛的数量,判断是否为树
图的着色,旅行商问题

必须掌握
image.png

二分图:

image.png

前缀树(Trie 树)

也称为字典树

广泛运用在字典查找中

方法一:暴力搜索 O(M* N)

方法二:前缀树 O(M)

重要性质:

1)每个节点至少包含俩个基本属性

  • children :数组或集合,罗列出每个分支当中包含的所有字符
  • isEnd :布尔值,表示该节点是否为某字符串的结尾

根节点是空的

除了跟节点,其他所有节点都有可能是单词的结尾,叶子节点一定是单词的结尾

最基本的操作:

1) 创建

遍历一遍输入的字符串,对每个字符串的字符进行遍历
从前缀树的根节点开始,将每个字符加入到节点的children字符集当中
如果字符集已经包含了这个字符,跳过
如果当前字符是字符串的最后一个,把当前节点的isEnd标记为真

2)搜索
从前缀树的根节点出发,逐个匹配输入的前缀字符
如果遇到了,继续往下一层搜索
如果没遇到,立即返回

image.png

image.png

线段树

假设我们有一个数组array[0…n-1],里面有n个元素,现在我们要经常对这个数组做两件事:
1.更新数组元素的数值

2.求数组任意一段区间里元素的总和(或者平均值)

方法一:遍历一遍数组
时间复杂度:On)

方法二:线段树

O(logn)

什么是线段树
一种按照二叉树的形式存储数据的结构,每个节点保存的都是数组里某一段的总和

例如
数组是[1,3,5,7,9,11}

image.png

树状数组 Binary Index Tree

先从一个例题出发
假设我们有一个数组array[0…n-1],里面有n个元素,现在我们要经常对这个数组做两件事:

1.更新数组元素的数值

2.求数组前k个元素的总和(或者平均值)

方法一:线段树
时间复杂度:O(logn)

重要的基本特征
利用数组来表示多叉树的结构,和优先队列有些类似
优先队列是用数组来表示完全二叉树,而树状数组是多叉树
树状数组的第一个元素是空节点
如果节点treely]是tree[x的父节点,那么需要满足y=X-(仪&()

总结

1)优先队列:常见面试考点,实现过程比较繁琐。在解决面试中的问题时,实行“拿来主义”即可

2)图:被广泛运用的数据结构,如大数据问题都得运用图论,在社交网络里,每个人可以用图的顶点表示,人与人直接的关系可以用图的边表示,在3)最短路径算法
地图上,要求解从起始点到目的地,如何行驶会更快捷,需要运用图论里的
3) 前缀树:出现在面试的难题中,要求能熟练地书写它的实现以及运用

4)线段树和树状数组:应用场合比较明确
如果要求在一幅图片当中修改像素的颜色,求解任意矩形区间的灰度平均值,则需要采用二维的线段树

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OB Cloud 初体验

文章来源:韩锋频道 韩锋 数据库行业资深从业者,著有《SQL 优化最佳实践》、《数据库高效优化》等数据库相关著作。 OceanBase(下文简称OB) 作为国内一款优秀的分布式数据库,这些年来发展很快,在金融、电商…

UDP协议结构及其注意事项

UDP报文结构 UDP报文结构主要是由两个部分组成的:UDP头部和数据部分。 UDP头部 源端口号:16位字段,指示数据发送方的端口号。目的端口号:16位字段,指示数据接收方端口号。UDP报文长度:16位字段&#xff0…

new HashMap{{put(“a“,“b“)}}

如题,这是什么鬼? Runnable r new Runnable(){Overridepublic void run() {}}; 上面这种写法大家不陌生吧,实际上 就是 定义了一个匿名内部类。 比如:下面这个就是 定义了一个 匿名的Test子类,旁边那个向下的箭头就…

Lua02——应用场景及环境安装

应用场景 是当今游戏领域使用最广泛的脚本语言之一。 搭配 OpenResty 使用,可以扩展Nginx服务器的功能,使用者仅需要编写Lua代码就能轻松完成业务逻辑。 与 Redis 结合。 Adobe Photoshop Lightroom 搭配 Lua 编写插件。 与游戏结合: C/…

DNS域名解析 不同网段的 实验

路漫漫其修远兮,吾将上下而求索 前言 知识应该是 有难宜简,用简单的语言讲清楚,而不是干拧螺丝的事,却说着造火箭的理论。 (尤其是大学讲台上的那一部分人,想想人家的学费,你的工资&#xff…

震惊!可视化大屏都卷成这样了!

如果你还认为可视化大屏只是一个屏幕展示几个数据、图表,那就大错特错了。进入2023年,可视化大屏都内卷到可以实时更新、多维动态、模板一键套用了。 奥威BI系统可视化大屏特点: 1、实时更新 所有取数都基于底层数据,当底层数据…

java开源 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城 小程序商城搭建

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

【Node.js】—基本知识点总结

【Node.js】—基本知识总结 一、命令行常用操作 二、Node.js注意点 Node.js中不能使用BOM和DOM操作 总结 三、Buffer buffer是一个类似于数组的对象,用于表示固定长度的字节序列buffer的本质是一段内存空间,专门用来处理二进制数据 特点:…

第15章_锁: MySQL并发访问相同记录以及从数据操作的类型划分锁(读锁、写锁)

事务的 隔离性 由这章讲述的 锁 来实现。 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在程序开发中会存在多线程同步的问题, 当多个线程并发访问某个数据的时候, 尤其是针对一些敏感数据(订单, 金额), 我们就需要保证这个数据在任何时刻最多只有一个线…

Java Stream 流对象(实用技巧)

目录 一、InputStream & OutputStream 1.1、InputStream 和 OutputStream 一般使用 1.2、特殊使用 1.2.1、如何表示文件读取完毕?(DataInputStream) 1.2.2、字符读取/文本数据读取(Scanner) 1.2.3、文件的随机…

UG\NX二次开发 选择基准平面 UF_UI_select_with_single_dialog

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: 使用UF_UI_select_with_single_dialog函数,选择基准平面。 效果: 代码: #include "me.hpp"//过滤 基准平面 UF_datum_plane_type int InitProcDa…

虹科产品|HK-TrueNAS开放式存储平台被评为数字公益产品

一、HK-TrueNAS 被评为数字公益产品 数字公共产品联盟(Digital Public Goods Alliance)是一项多方利益相关者倡议,旨在促进数字公益(DPG)的发现、开发、使用和投资。数字公共产品的定义是所有人都能免费获取的资源或服…

Linux下的系统编程——进程间的通信(九)

一、进程间通信常用方式 IPC方式: Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核&am…

螺母加工工艺流程

螺母是具有内螺纹并与螺栓配合使用的紧固件,具有内螺纹并与螺杆配合使用用以传递运动或动力的机械零件,是自动化行业中的重要传动零部件之一。大家知道螺母的加工工艺吗? 一般来说,螺母的加工工艺流程包括原材料采购、初加工、调质、精加工、…

vue基础知识六:v-show和v-if有什么区别?使用场景分别是什么?

一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else)&#xff0c;都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show"isShow" /> <Model v-if"isShow" />当表达式为true的时候&#…

网管实战⑼:配置华为S5720交换机

配置好汇聚交换机后&#xff0c;需要根据单位情况配置具体的接入交换机。 自从2019年12月底配置好交换机后&#xff0c;基本上都没有怎么操作交换机了。那时候使用的是H3C交换机&#xff0c;主要是H3C S7706、H3C S5120、H3C S5130、H3C S5500、H3C S3600等型号的交换机&#x…

微信公众号从0到1开发

之前做项目有就接触微信公众号的接入&#xff0c;但没有将过程记录成笔记&#xff0c;这几天在做的项目也是需要集成微信公众号&#xff0c;正好将在做的过程记录成笔记 文章目录 0、准备工作一、公众号平台1、参数解释2、获取域名 二、后端配置 一、第一阶段-公众号接入1、接…

第4节-PhotoShop基础课程-Ps格式

文章目录 前言1.像素认识2. 图层认识1.图层有上下前后遮挡关系2.橡皮檫可以擦掉选择图层的像素3.新建图层4.新建删除图层 3. 分辨率的理解4. 图片格式A 前言 本章主要介绍PS常用格式 1.像素认识 下面每个格子就是像素 2. 图层认识 1.图层有上下前后遮挡关系 2.橡皮檫可以擦…

elk安装篇之 Kibana安装

Kibana是一个开源的分析与可视化平台&#xff0c;设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。是es的可视化客户端之一。 一&#xff1a;下载 https://www.elastic.co/cn/kibana 我的es是elasticsearch-7.10.2版本&#x…

MQ解决重复消费问题

1. 消息重复消费概述 重复消费一直是行业内重视的问题&#xff0c;在当下的互联网时代&#xff0c;追求的是高效&#xff0c;安全&#xff0c;准确的数据交互。对于大型项目来讲&#xff0c;数据量数以亿计&#xff0c;那么这些数据如何确保安全准确&#xff0c;同时又不失效率…