算法 随想录 柠檬水 队列

【算法】字符串

1 反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。 1. 双指针 class Solution: def reverseString(se ......
字符串 算法 字符

【算法】哈希表

1 哈希表理论基础 1.1 哈希表 哈希表是根据关键码的值而直接进行访问的数据结构。一般哈希表都是用来快速判断一个元素是否出现集合里。 1.2 哈希函数 哈希函数如下图所示,通过hashCode把名字转化为数值,一般hashcode是通过特定编码方式,可以将其他数据格式转化为不同的数值。如果hash ......
算法

网络拥塞控制算法总结-PolyCC

字节跳动在SIGCOMM'23以Poster形式提交了一篇论文《PolyCC: Poly-Algorithmic Congestion Control》,试图将各种拥塞控制算法整合到一个统一的框架里。其理由是近40年来各种渠道发布的各种拥塞控制算法,没有一种算法能解决所有网络场景(不同的应用,不同的 ......
算法 PolyCC 网络

随想录Day4|24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07. 链表相交、142. 环形链表Ⅱ

随想录Day4|24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07. 链表相交、142. 环形链表Ⅱ 24. 两两交换链表中的节点 文章讲解 视频讲解 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能 ......
节点 随想录 环形 随想 Day4

JavaScript实现排序算法

目录前言排序算法冒泡排序选择排序插入排序归并排序快速排序计数排序基数排序 前言 排序算法是《数据结构与算法》中最基本的算法之一,本篇使用JavaScript语言实现各种常见排序算法。 排序算法 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一 ......
算法 JavaScript

代码随想录算法训练营-动态规划-1|509. 斐波那契数、70. 爬楼梯

509. 斐波那契数 1 class Solution: 2 def fib(self, n: int) -> int: 3 if n <= 2: 4 return n 5 6 prev1, prev2 = 0, 1 7 for _ in range(2, n+1): 8 sum_value = p ......
随想录 训练营 随想 算法 楼梯

【算法】链表

1 链表理论基础 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。 链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址 ......
算法

redis消息队列——发布订阅

一、相关依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> < ......
队列 消息 redis

[代码随想录]Day52-单调栈part03

题目:84. 柱状图中最大的矩形 思路: 实现要确定一个核心问题:包含完整一个柱子的最大矩形要找到这根柱子左侧最后一个高于他的柱子以及右侧最后一个高于他的柱子的位置(等同于左侧第一个小于他,右侧第一个小于他,因为+1 -1就是) 只要get到一个点,比如:30 50 70 80 60 70 40 这 ......
随想录 随想 代码 part Day

代码随想录算法训练营day17 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

110.平衡二叉树 class Solution { public: int getHeight(TreeNode* node){ if(node == NULL) return 0; int leftHeight = getHeight(node->left); if(leftHeight == ......
随想录 之和 训练营 随想 算法

【算法】算法性能分析

1 时间复杂度 1.1 知识点 时间复杂度是一个函数,它定性描述该算法的运行时间。 通常会估算算法的操作单元数量来代表程序消耗的时间。假设算法的问题规模为n,那么操作单元数量便用函数f(n)来表示,随着数据规模n的增大,算法执行时间的增长率和f(n)的增长率相同,这称作为算法的渐近时间复杂度,简称时 ......
算法 性能分析 性能

随想录Day3|203. 移除链表元素、707. 设计链表、206. 反转链表

随想录Day3|203. 移除链表元素、707. 设计链表、206. 反转链表 之后的文章就不放题目链接了,因为真的很推荐Vscode的LeetCode插件,搜一下题号就可以开始code了! 我没怎么用过C++所以也是才开始熟悉它的特性,因为是链表的开始,所以搬运一下卡尔的这一小段代码。 // 单链 ......
随想录 随想 元素 Day3 Day

基于DCT变换和huffman编码的语音压缩算法matlab仿真

1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.算法理论概述 语音是人类最重要、最有效、最常用和最方便的交换信息的形式,是人们思想疏通和情感交流的最主要途径。在实际的语音通信中,有些信道难以扩宽且质量很差;有些信道正被广泛使用,短期内难以更新;有些昂贵的信道,每压缩一个比特 ......
算法 语音 编码 huffman matlab

算法训练day17 LeetCode 110

算法训练day17 LeetCode 110.257.404 110平衡二叉树 题目 110. 平衡二叉树 - 力扣(LeetCode) 题解 代码随想录 (programmercarl.com) 当子树已经不平衡,直接返回-1.平衡则返回子数高度进行更高树间的高度比较 class Solution ......
算法 LeetCode day 110 17

拓展欧几里得算法揭秘

最大公约数 更相减损术:\(\gcd(x,y)=\gcd(y-x,x)(x\leq y)\)。 设 \(\gcd(x,y)=k,\gcd(p,q)=1,x=kp,y=kq\)。 那么 \(\gcd(y-x,x)=\gcd(kq-kp,kp)=k\times\gcd(q-p,p)\)。 设 \(\gc ......
算法

算法训练day16 LeetCod 104

算法训练day16 LeetCod 104.111.222 104.二叉树的最大深度 题目 104. 二叉树的最大深度 - 力扣(LeetCode) 题解 代码随想录 (programmercarl.com) 递归采用后序的遍历顺序,在根节点处做高度数据的处理 class Solution { pu ......
算法 LeetCod day 104 16

算法打卡|Day2 数组part02

Day1 数组part01 今日任务:数组理论基础,704. 二分查找,27. 移除元素 目录Day1 数组part01今日任务:数组理论基础,704. 二分查找,27. 移除元素Problem: 977. 有序数组的平方思路解题方法复杂度CodeProblem: 209. 长度最小的子数组思路解题 ......
数组 算法 Day2 part Day

文心一言 VS 讯飞星火 VS chatgpt (98)-- 算法导论9.3 4题

四、用go语言,对一个包含n个元素的集合,假设一个算法只使用比较来确定第i小的元素,证明:无需额外的比较操作,它也能找到第 i-1 小的元素和第 n-i大的元素。 文心一言: 在这个问题中,我们要使用一个称为"QuickSelect"的算法,这是一个用于在未排序的列表中查找第k小元素的算法。该算法基 ......
文心 导论 算法 chatgpt VS

Aho-Corasick 算法 AC自动机实现

敏感词过滤在社区发帖、网站检索、短信发送等场景下是很常见的需求,尤其是在高并发场景下如何实现敏感词过滤,都对过滤算法提出了更高的性能要求,Ahocorasick算法能够实现毫秒级的万字过滤匹配,能够很好的满足各种场景下的敏感词过滤需求。 Aho-Corasick算法通过将模式串预处理为确定有限状态自 ......
自动机 Aho-Corasick 算法 Corasick Aho

【Python】递归算法

定义 递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例程调用。 思想 函数调用函数本身,直到不能调用为止 注意事项 基本情况用于保证程序调用及时返回,不在继续递归,保证了程序可终止。 递推关系,可将所有其他情况拆分到基本案例。 ​递推关系​: 一个问题的结果与其子问题的结果之间的关系。 ......
算法 Python

常用的校验算法

CRC校验码 public static string CRCCheck(string val) { val = val.TrimEnd(' '); string[] spva = val.Split(' '); byte[] bufData = new byte[spva.Length + 2]; ......
算法 常用

【算法题】将十二位之内的数字转为汉字输出

// 单位,末尾 个 省略 const charUnitArr = ['千', '百', '十', '亿', '千', '百', '十', '万', '千', '百', '十', '']; // 数字 0-9的 汉字写法 const chartNumberArr = ['零', '壹', '贰', ......
算法 数字

[代码随想录]Day51-单调栈part02

题目:503. 下一个更大元素 II 思路: 总之就是走两次nums,可以拼接,也可以用下面的取余方式。 代码: func nextGreaterElements(nums []int) []int { lens := len(nums) res := make([]int, lens) for i ......
随想录 随想 代码 part Day

随想录Day2|977. 有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵Ⅱ

随想录Day2|977. 有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵Ⅱ 977. 有序数组的平方 LeetCode题目 文章讲解 视频讲解 给定一个按非递减顺序的整数数组nums,返回每个数字的平方组成的新数组,也要按照非递减顺序排序。 1 <= nums.length <= 10 ......
数组 随想录 矩阵 螺旋 随想

算法训练day15 层序遍历、LeetCode 226

算法训练day15 层序遍历、LeetCode 226.101 层序遍历 层序遍历是一种广度优先的遍历方式 队列符合广度优先层层深入的逻辑,栈符合深度优先(递归)的逻辑 //逐层完整遍历 class Solution { public: vector<vector<int>> levelOrder( ......
算法 LeetCode day 226 15

[算法学习笔记] 浅谈二路归并&双指针&归并排序

二路归并 · 双指针 是一种优化思想。它可以在 \(O(n)\) 的复杂度下把两个长度为 \(n\) 的有序数组合并为一个有序数组。 它的具体处理方法如下: 定义两个长度为 \(n\) 的升序数组 \(a,b\)。,合并完后长度为 \(2n\) 的数组 \(c\),初始化两个指针 \(x=y=1\) ......
指针 算法 amp 笔记

图像加密算法总结

一、基于混沌Logistic加密算法 1.加密过程:混沌加密算法使用混沌序列作为密钥来对数据进行加密。混沌序列是由混沌系统生成的一系列看似随机的数字。通过将明文与混沌序列进行异或运算或其他操作,可以将数据转化为加密形式。只有拥有相同的混沌序列才能正确解密数据。[1] 混沌系统指的是一类非线性动力系统 ......
算法 图像

基本差分算法:一维差分、二维差分

1、一维差分 首先要知道,差分是前缀和的逆运算, a1 a2 …… an 前缀和b1 b2 …… bn 差分 以AcWing.797为例,题目要求如下: 输入一个长度为 n 的整数序列。 接下来输入 m 个操作,每个操作包含三个整数 l, r, c ,表示将序列中 [l,r] 之间的每个数加上 c ......
算法

基本前缀和算法:一维前缀和、二维前缀和、子矩阵和

1、一维前缀和 以AcWing.795为例,题目要求如下: 输入一个长度为N的整数序列。接下来再输入m个询问,每个询问输入一对l, r。对于每个询问,输出原序列中从第l个数到第r个数的和。 输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一 ......
前缀 矩阵 算法

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例|附代码数据

原文链接:http://tecdat.cn/?p=21545 原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于贝叶斯推断的研究报告,包括一些图形和统计输出。 示例1:使用MCMC的指数分布采样 任何MCMC方案的目标都是从“目标”分布产生样本。在这种情况下,我们将使用平均值为1的指数分布作为 ......