自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 哈夫曼编码是如何达到压缩的?

1.基本概念应该搞清三个概念:哈夫曼树,哈夫曼编码和哈夫曼压缩具体请看下图a)哈夫曼树b)哈夫曼树的构造过程和哈夫曼编码c)哈夫曼压缩解释:哈夫曼编码是怎么达到压缩的?如上图所示,把结点权值看作结点出现的次数。字符a出现45次,字符b出现13次,字符c出现12次,字符d出现16次,字符e出现9次,字符f出现5次。对abcdef六个字符编码,如果采用等长编码,至少一个字符需要3位。这样对这么多字符编码就需要3*(45+13+12+16+9+5)=300位。而采用如图所示的哈夫曼编码就只需

2021-08-24 22:20:46 533

原创 二叉树先序中序后序遍历

1.题目:牛客网 NC45 (实现二叉树先序,中序和后序遍历)描述分别按照二叉树先序,中序和后序打印所有的节点。示例1输入:{1,2,3}返回值:[[1,2,3],[2,1,3],[2,3,1]]2.二叉树的遍历a.先序遍历:如果二叉树为空,什么也不做。否则:1)访问根节点2)先序遍历左子树3)先序遍历右子树b.中序遍历:如果二叉树为空,什么也不做。否则:1)中序遍历左子树2)访问根节点3)中序遍历右子树c.后序遍历:如果二叉树为空,什么也不做。否则:1)后序遍历

2021-08-24 17:28:20 226

原创 二维vector的初始化,使用二维vector时:vector subscript out of range

1.错误代码: vector<vector<int>> dp; dp[i][j] = 12.错误原因二维vector,一定要只有初始化后,才能按二维数组dp[i][j]的样式访问。3.二维vector的初始化方法1: 采用构造函数 vector<vector<int>> dp(n, vector<int>(m)); //n行m列,全部初始化为零方法2:直接初始化: vector<vector<int&gt

2021-08-24 14:45:12 832

原创 寻找第K大(借用快排思想)

1.题目:牛客网 NC88 (寻找第K大)描述有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(1<K<n),请返回第k大的数(包括重复的元素,不用去重),保证答案存在。要求时间复杂度O(n)示例1输入:[1,3,5,2,2],5,3返回值:2 2.解题思路这题给了提示,可以借用快排的思想。同时要注意对事件复杂度的要求是O(n)。对于快排不熟悉的,建议看下我的这篇博文:快速排序详细讲解和代码实现先给大家

2021-08-23 17:33:31 144

原创 快速排序详细讲解和代码实现

1.快速排序快排的基本思想是分治策略:在待排序表L[1…n]中任意取一个元素pivot作为基准。通过一趟比较大小将待排序表L[1…n]划分为独立的两部分L[1…k-1]和L[k+1…n],使得L[1…k-1]中所有元素小于pivot,L[k+1…n]中所有元素大于或等于pivot。,pivot放在了最终位置L[k]上,这样就完成了第一趟快排。然后,再分别递归地对两个字表重复上述过程,直至每部分只有一个元素或空为止。这样,排序完成。2.代码实现快排函数为QuickSort(),划分函数为Partiti

2021-08-23 11:43:42 758

原创 合并两个有序数组(双指针解题)

1.题目:牛客网 NC22 (合并两个有序的数组)描述给出一个整数数组A和有序的整数数组B,请将数组B合并到数组A中,变成一个有序的升序数组注意:1.可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n,A的数组空间大小为m+n2.不要返回合并的数组,返回是空的,将数组B的数据合并到A里面就好了3.数组A在[0,m-1]的范围也是有序的例1:A: [4,5,6,0,0,0],m=3B: [1,2,3],n=3合并过后A为:A: [1,2,3,4,5,6]

2021-08-21 21:31:27 2327

原创 最长无重复子数组/最长无重复字串详细解法

1.题目:牛客网NC41( 最长无重复子数组)描述给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组 示例输入:[2,2,3,4,3]返回值:3说明:[2,3,4]是最长子数组 2.滑动窗口法解题此类题目,我先带大家理一下思路。所谓滑动窗口法是指设置两个指针,left和right表示窗口的两边。右指针往前走,有指针每走

2021-08-21 15:05:15 2497

原创 用两个栈实现队列

1.题目:牛客网NC76(NC76 用两个栈实现队列)描述用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。示例:输入:["PSH1","PSH2","POP","POP"]返回:1,2解析:"PSH1":代表将1插入队列尾部"PSH2":代表将2插入队列尾部"POP“:代表删除一个元素,先进先出=>返回1"POP“:代表删除一个元素,先进先出=&gt

2021-08-20 11:25:22 190

原创 error: non-void function does not return a value [-Werror,-Wreturn-type]

非void函数一定要有返回值检查代码中是否没有return语句,返回一个值

2021-08-20 10:25:56 7351

原创 反转链表详细讲解(就地逆置法)

1.题目:牛客网NC78(反转链表)描述输入一个链表,反转链表后,输出新链表的表头。示例1输入:{1,2,3}返回值:{3,2,1}2.就地逆转法反转链表只需要两个指针beg和end,解题思路参考单链表反转详解(4种算法实现)本文是对单链表反转详解(4种算法实现)中提到的“就地扭转法”的详细扩充。具体步骤,见笔者画的示意图(字迹稍潦草,不印象理解内容)就地逆置法则是直接对原链表做修改,从而实现将原链表反转。步骤详解(看图食用更佳)第一步:申请两个指针beg和end(开始和结束),

2021-08-18 11:29:00 1151

原创 二分查找法的递归和非递归实现(C++)

文章目录1.二分查找法思想2.算法使用前提3.递归实现(C++)4.非递归实现(C++)1.二分查找法思想折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是:(这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x;如果x>a[n/2],则我们只要在数组a的右半部继续搜

2021-08-06 21:04:49 2243

python CT切片图像三维重建(数据和代码).zip

python实现CT切片图像的三维重建,包含数据集和代码。

2021-12-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除