惊艳到你的算法

server/2024/9/25 1:32:24/

场景一

小时候去商场玩时,爸爸妈妈经常告诉我,如果你在商场走丢了,千万不要到处乱跑,站在原地不动就好了,我们会来找你的。

长大后学了计算机才明白,原来那个时候爸爸妈妈就已经会用DFS算法。如果我在原地等待他们,爸爸妈妈就可以通过记忆进行搜索,时间复杂度变为O(N)(N指商场面积),很快就可以找到我了。

场景二

假如一个很小且混乱的桌子,你很容易就找到了自己需要的东西,这是一个很经典的算法LRU Cache。假如你每次都往桌子上随意放东西,实际上每次放的东西都是处于堆顶。假如你每次都将东西进行整理,但是没有记住每件东西所存放的位置,这种效率要比随便乱放东西低一个层级,不过是浪费时间而已。

场景三

假设你想到了某个正则语言,通过编写程序不断询问某个句子是否是这门正则语言,经过一定次数的询问后,能够得到这门正则语言相应的DFA,即Angluin‘s Learning Algorithm算法

场景四

KMP和相关联的AC(Aho-Corasick)自动机,刚了解时误以为是自动AC机,后来使用后,算法中的效率和思想真的是惊喜到我了。

场景五

FFT(快速傅立叶变换)算法,对n次多项式乘法计算时,时间复杂度为olog2n

扩展欧几里得算法,代码行数少且容易记忆,在做数论题时,求解不定时方程、乘法逆元等经常使用。

快速幂取模算法,求解k阶矩阵的n次方时,复杂度为k3。想要使用好这个算法,得对它进行充分的理解,理解之后代码写起来容易,计算效率很高。

自适应辛普森算法,主要解决所有一维定积分,代码行数20行,算法中主要采用递归计算三点辛普森公式。

场景六

Streaming算法。这个是在之前面试中被问到的,当时听到这个问题时,大脑是处于懵逼状态,因为根本就没有接触过这个算法。问题大致是:给一个未知长度的Streaming data,在Streaming结束时返回n个等概率的data。

我当时的第一反应是,未知长度,概率肯定也是未知的,这怎么可能还能保证等概率???

后来我去研究了一番,这个算法刷新了我的认知,简直令我惊叹,居然这么简单。首先将前n个data进行保留,对后面进来的data,通过概率选择是否保留,即用n除以i(i为当前data位置)得到概率;如果进行保留,将之前保留的data随机删除一个,最后在返回n。该算法的复杂度为o(L)。


http://www.ppmy.cn/server/121588.html

相关文章

招联金融2025秋招--大量招后台、算法

【投递方式】 直接扫下方二维码,或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus,使用内推码 igcefb 投递 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策划 产品运营…

前后端数据交互 笔记03(get和post方法)

1.解决页面网站中,中文出现乱码的情况: request.setCharacterEncoding("utf-8") response.setCharaterEncoding("utf-8") 2.给后端设置返回json数据: response.setContentType("text/json,charsetutf-8") …

Vue 项目实战4-无缝轮播图

养成好习惯,先赞后看,感谢对作者大大的支持 一、话不多说,直接上效果图: 完整视频展示链接如下: https://item.taobao.com/item.htm?ftt&id833405684191 二、实现思路 HTML结构 文档头部设置:定义…

Taro多端统一开发解决方案

Taro 文档 Taro | 多端统一开发解决方案 Taro是什么? Taro 是一个开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发 微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ / 飞书 小程序 / H5 / RN 等应用。 现如今市面上端的形态多种多样&a…

Java基础知识扫盲

目录 Arrays.sort的底层实现 BigDecimal(double)和BigDecimal(String)有什么区别 Char可以存储一个汉字吗 Java中的Timer定时调度任务是咋实现的 Java中的序列化机制是咋实现的 Java中的注解是干嘛的 Arrays.sort的底层实现 Arrays.sort是Java中提供的对数组进行排序的…

自动化学习3:日志记录及测试报告的生成--自动化框架搭建

一.日志记录 1.配置文件pytest.ini:将日志写入文件方便日后查询或查看执行信息。 需要将文件处理器(文件存放位置/时间/格式等等)添加到配置文件中的【日志记录器】 # pytest.ini [pytest] # ---------------日志文件,需要配合…

状态估计算法

目录 前言一、贝叶斯滤波二、卡尔曼滤波2.1 KF简介2.2 基本线性模型2.3 KF公式推导2.3.1 预测值2.3.2 先验误差协方差矩阵2.3.3 卡尔曼增益2.3.4 最优估计值2.3.5 后验误差协方差矩阵 2.4 KF算法使用2.5 MATLAB验证2.5 Python验证 三、扩展卡尔曼滤波3.1 EKF原理3.2 MATLAB实现…

视频格式转为mp4(使用ffmpeg)

1、首先安装ffmpeg,下载链接如下 https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-6.1.1-full_build.7z 安装后确保ffmpeg程序加到PATH路径里,cmd执行ffmpeg -version出现下图内容表示安装成功。 2、粘贴下面的脚本到文本文件中,文件后缀…