![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法笔记
nachr
这个作者很懒,什么都没留下…
展开
-
算法分析——分治
1、分治2、Leetcode题目2.1 Leetcode169 : 多数元素题目描述:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2**题目分析:**这道题还是比较简单的,有很多种解法。比如,方法一:由于众数出现的频率大于n/2,所以在排序之后众数必存在于下标[n/2]原创 2020-08-19 11:27:32 · 425 阅读 · 0 评论 -
图像压缩——LZW压缩算法
LZW压缩算法1. LZW基础概念之前提到的算术编码、霍夫曼编码等技术集中在消除编码的冗余上,而本文要讲的LZW编码是一种针对空间冗余的无误差压缩方法。LZW算法o又叫“串表压缩算法”,就是通过建立一个将字符串和其对应的记号构成的表(把已经出现过的字符串映射到记号上),用较短的代码来表示较长的字符串来实现压缩。需要注意的是,LZW算法中字符串和记号的对应关系是在压缩的过程中动态生成的,并且隐含在压缩数据中,解压的时候也是一步一步还原编码并动态生成字典的过程。2. LZW算法详解2.1 LZW编码原创 2020-06-21 11:04:50 · 5257 阅读 · 1 评论 -
霍夫曼编码
文章首发于我的个人博客算法原理由上图来说明霍夫曼编码的原理。首先,假设我们要进行编码的字符序列为"AAAAAAABBCCCCDDDD",统计这些字符出现的频率,然后将这些字符按频率从低到高排序,并且存放在列表list1中。然后,从list1中取出频率最低的两个字符,分别作为左子树和右子树构成一个新的节点,并将新的节点放在list1中,同时删除刚刚从list1中取出的两个字符。以此类推,直到list1中只剩一个节点时停止,如此便可构成一棵霍夫曼树。其次,就可以用构造的霍夫曼树来完成霍夫曼编码。从根节点开原创 2020-06-15 15:20:17 · 968 阅读 · 0 评论 -
算术编码
前言这篇博客主要总结大二下课程《信息论》实验的内容。主要包含固定模式的算数编码以及自适应模式的算术编码。我将首先介绍这两种算术编码的基本思想和实现思路,然后给出具体的python代码并对代码中的一些关键点进行解释说明。固定模式的算术编码问题设信源可能输出的符号是26个字母,且每个字母出现的概率为:a, b, c, d, e, f 均为0.1,其它是等概的,试编写程序可以对任意字母序列(如presentation)进行固定模式的算术编码,并进行相应的译码。算法原理以上图为例说明固定模式算术编码的原创 2020-06-14 19:26:15 · 7202 阅读 · 0 评论 -
动态规划经典例题解析
一、不同路径问题题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?说明:m 和 n 的值均不超过 100。示例输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以...原创 2019-06-24 12:37:26 · 750 阅读 · 0 评论 -
递归简单示例
#include<iostream>using namespace std;int fab(int n){//斐波那契数列 if (n == 1) return 1; else if (n == 2) return 2; else return fab(n - 1) + fab(n - 2);}int fac(int n){//求阶乘 if (n ...原创 2019-08-06 19:42:23 · 111 阅读 · 0 评论