面试题:数据结构和算法

news2024/11/24 4:19:39

1、时间复杂度解释一下 算法的时间复杂度,用来度量算法的运行时间,记作: T(n) = O(f(n))。它表示随着 输入大小n 的增大,算法执行需要的时间的增长速度可以用 f(n) 来描述。

  1. 当 T(n) = c,c 为一个常数的时候,我们说这个算法的时间复杂度为 O(1);如果 T(n) 不等于一个常数项时,直接将常数项省略。
  2. 因为高次项对于函数的增长速度的影响是最大的,所以我们直接忽略低次项。
  3. 因为函数的阶数对函数的增长速度的影响是最显著的,所以我们忽略与最高阶相乘的常数。

比如 T(n) = 29 ,此时时间复杂度为 O(1)。 比如 T(n) = n + 29,此时时间复杂度为 O(n)。 比如T(n) = n^3 + n^2 + 29,此时时间复杂度为 O(n^3)。 比如T(n) = 3n^3,此时时间复杂度为 O(n^3)。

for (int i = 2; i < n; i++) { 

i *= 2;
printf("%i\n", i);
}

复制

假设循环次数为t,必有2^t < n t = log(2)(n),即 T(n) = log(2)(n),可见时间复杂度为 O(log(2)(n)),即 O(log n)。

加入 T(n) = T(n – 1) + T(n – 2) 是一个斐波那契数列,通过归纳证明法可以证明,当 n >= 1 时 T(n) < (5/3)^n,同时当 n > 4 时 T(n) >= (3/2)^n。 所以该方法的时间复杂度可以表示为 O((5/3)^n),简化后为 O(2^n)。


整数反转、以及溢出问题 反转数字是个很简单的问题,只需不断取模累乘即可 int t = x%10; res = res*10 + t; 判断溢出 res < INT_MAX/10,这种情况无论t为多大,都不会溢出; res > INT_MAX/10,这种情况无论t为多小,一定会溢出; res == INT_MAX/10,其中INT_MAX=2147483647,所以当t>7时,会发生溢出;

链接: 参考.


Unity游戏常用洗牌算法


【面试题】冒泡排序 冒泡排序(BubbleSort) 在排序过程中相邻元素不断比较交换,一些元素慢慢被换到最后 时间复杂度 最好时间复杂度是O(N) :相邻不需要交换 最坏时间复杂度是O(N^2):反序文件,一直交换

参考我的另一个博文 链接: 冒泡示意图和代码


二分查找 二分查找:在有序的集合中搜索特定值的过程 有序集合:Collection 目标:Target 索引:Index 左右指针:Left和Right 中间指针:Middle——根据条件来确定向左查找还是向右查找

进行二分查找的训练

链接: leetcode二分查找算法.


【面试题】二叉树 二叉查找树(英语:Binary Search Tree),也称为 二叉搜索树、有序二叉树(Ordered Binary Tree)或排序二叉树(Sorted Binary Tree)。

具有下列性质的二叉树(可以是空树):

  1. 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值
  2. 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值
  3. 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节点

相比其他数据结构优势在于:查找插入的时间复杂度较低。

为 O(logn) 最坏是O(N)

改进版的二叉查找树可以使树高为 O(logn),从而将最坏效率降至 O(logn),如 AVL 树、红黑树等。

进行二叉树的训练

链接: leetcode二叉搜索树算法.


== 【面试题】用栈实现队列 、 用队列实现栈 == 算法:2个栈实现队列 链接: 用栈实现队列.

算法:2个队列实现栈 链接: 用队列实现栈.

 

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

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

相关文章

[附源码]Python计算机毕业设计Django基于vue+mysql开发的考试系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Java web 2022跟学尚硅谷(九)书城项目

Java web 2022跟学尚硅谷九书城项目需求分析数据库设计ER图书城1.0简单部署项目类图相关代码UserControllerUserDAOImplUserDAOBookCartItemOrderOrderItemUserUserServiceImplUserServiceapplicationContext.xml书城1.1实现功能1. 用户登录2. 首页图书列表展示3. 首页价格筛选…

Vue3-ElemenPlu,全栈开发后台系统1-1-2-9第一章,第二章前端系统架构设计

Vue3+ElementPlus Lo2+MongoDB 菜单按钮权限,JWT认证,审批流,常规的CRUD,模块化,组件化 技术栈: 架构设计,vue3全家桶,koa2, 权限: Role-Based A

[附源码]Node.js计算机毕业设计辅导员班级量化管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

IMX6启动流程

目录 1. 流程图 2. u-boot.imx的构造 1. 流程图 正常情况下&#xff0c;一台IMX6设备的启动路径就是图中自上而下最左边那条路&#xff1a; 启动/复位后先检查CPU的ID(每颗芯片独一无二) ------> 检查复位状态(有没有按下复位键) ------> 检查boot模式(mmc? USB? SPI…

ARM寄存器组织(常见专用寄存器、控制寄存器CPSR)

目录 一、寄存器的概念 1、什么是寄存器&#xff1f; 2、寄存器的分类 3、不同工作模式下使用的寄存器 二、常见专用寄存器 1、R15&#xff08;PC,Program Counter&#xff09; 2、R14&#xff08;LR,Link Register&#xff09; 3、R13&#xff08;SP,Stack Pointer&am…

FineReport大数据分析工具- 统一切换轮播图表接口

1. 概述 1.1 版本 报表服务器版本 功能变动 11.0 - 1.2 预期效果 某些场景下&#xff0c;需要让一张报表内的多个轮播图表同时切换。那么该如何实现呢&#xff1f;效果如下图所示&#xff1a; 1.3 实现思路 按钮添加点击事件&#xff0c;通过 JS 脚本调用接口统一切换轮播…

【模拟电路】431基准电压源

项目简介 概述 431电压基准芯片为3脚稳压集成电路&#xff0c;431基准电压源具有良好的热稳定性能的&#xff0c;三端可调分流&#xff0c;也被称为电压调解器或三端取样集成电路。凭借体积小、重量轻、精度高、稳定可靠、基准电压精密可调、输出电流大&#xff0c;且价格便宜…

LightDock、PatchDock蛋白蛋白对接软件linux端命令行使用

本文实在ubuntu下操作 DDB1-CRBN.pdb 、brd4.pdb 是需要对接的两个pdb蛋白文件 1、PatchDock 网页版&#xff1a;https://bioinfo3d.cs.tau.ac.il/PatchDock/php.php PatchDock有网页版&#xff0c;如下&#xff1b;软件版需要申请获取下载链接 参考&#xff1a;https://bioi…

QT4.8.7 打开Mupdf

一.Win10环境 1.Win10 Visual Studio 2017 安装 这个直接安装了 a.打开mupdf 源码 b.编译源码 参考这几个贴子 在Qt中调用Mupdf库进行pdf显示 mupdf-1.17.0 源代码编译、下载 qt vc pdf阅读器 我用的是mupdf-1.11-source的&#xff0c;用VS2017打开会有这个问题 c.修改配…

移植MQTT-C库(附源码)

Software (mqtt.org)中mqtt客户端的c库里面有一个叫MQTT-C的库&#xff0c;就2个实现文件&#xff0c;算比较简单的了&#xff0c;实现了基本的mqtt客户端功能&#xff0c;移植一下试试。 我的移植代码放在我的资源里面&#xff1a;https://download.csdn.net/download/oushao…

BigInteger类和BigDecimal类

BigInteger类 BigInteger适合保存比较大的整型 当在编程中遇到需要保存一个特别大的数字&#xff0c;比如地球的人口。 这时如果用long类型保存可能都不够了&#xff0c;此时就需要用到BigInteger BigInteger不能直接*/add()加subtract()减multiply()乘divide()除 使用演示&…

推荐系统学习笔记-论文研读--渐进分层抽取的多任务学习模型

研究背景 多任务相关性的复杂性和竞争性&#xff0c;MTL模型往往会出 现性能退化和负迁移跷跷板现象&#xff0c;即一项任务的性能往往会因影响其他任 务的性能而得到提高 研究成果 跷跷板现象的发现&#xff0c;MTL由于复杂的内在关联性而没有优于相应的单任务模型从联合表…

[附源码]Node.js计算机毕业设计仿咸鱼二手物品交易系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

11月CPI超预期放缓,下一步加息基调且看今晚

随着2022年最后一次美国“通胀报告”的公布&#xff0c;美联储未来政策走向决议将迎来关键时刻&#xff01;12月13日晚&#xff0c;美国劳工部公布的报告显示&#xff0c;美国11月CPI同比增长7.1%&#xff0c;超预期放缓&#xff0c;增速低于预期值7.3%和前值 7.7%。美国11月核…

SSM个人饮食管理系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 个人饮食管理系统 网站前台&#xff1a;关于我们、联系我们、新闻信息、食谱信息、交流信息 管理员功能&#xff1a; 1、…

JavaScript(四):流程控制

流程控制if语句if else 语句&#xff08;双分支语句&#xff09;if -else if语句&#xff08;多分支语句&#xff09;三元表达式switch语句for循环while循环do while 循环continue关键字break关键字if语句 语法结构 if&#xff08;条件表达式&#xff09;{ //条件成立执行的代…

计算摄影——风格迁移

这一章来总结一下图像风格迁移相关的内容&#xff0c;风格迁移的任务是将一幅图作为内容图&#xff0c;从另外一幅画中抽取艺术风格&#xff0c;两者一起合成新的艺术画&#xff0c;要求合成的作品即保持内容图的主要结构和主体&#xff0c;又能够具有风格图的风格&#xff0c;…

精品spring boot+MySQL新冠物资管理系统vue

《spring bootMySQL新冠物资管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 使用技术&#xff1a; 操作系统&#xff1a;Windows 10、Windows 7、Windows 8 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&…

人乳铁蛋白:艾美捷Kamiya ELISA试剂盒解决方案

乳铁蛋白是一个分子量为80 kDa的铁结合糖蛋白&#xff0c;属于转铁蛋白家族 [1] 。乳铁蛋白在初乳和牛奶中含量高&#xff0c;在眼泪、唾液、和支气管分泌物、胆汁和胃肠液等粘膜分泌物中的含量较低。此外&#xff0c;乳铁蛋白也是中性粒细胞的组成成分。 1939年Sorensen等人在…