自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 翻转二叉树

在使用中序遍历时我们会优先交换左子树的各个节点,然后将根节点的左右孩子交换,这样原本的左孩子就变成了右孩子,原本的右孩子就变为了左孩子,然后我们需要交换其右子树,但这里注意!现在的右孩子其实是原本的左孩子,这样就导致了原本的左孩子又被操作了一次,而右孩子压根就没有动过,使得结果出错.确实如此,但只是对于前序和后序遍历,而中序遍历则会出现问题.以上就是翻转二叉树我们所需要注意地方了,当然这道题还可以使用迭代的前中后序来解绝,思路都是一样的,还可以使用层序遍历,这里就不再过多介绍了.

2023-11-18 10:45:11 48 1

原创 浅谈---栈与队列

它们是容器的适配器,底层是用容器来实现的一种操作受限制的数据结构(默认使用deque来实现,当然其他容器也可以),所以关于栈和队列的内存是否连续也是由它们底层容器来决定的,比如deque严格来说就不是连续的,所以以它为基础的队列和栈也自然就不是连续的了.栈很适合处理一些相邻元素的问题,就比如最经典的括号匹配问题:我们发现最先匹配的左括号都是跟它相邻的一个括号匹配的,且我们会发现越是先出现的左括号就是越在后面才能匹配,这正好与栈的特性----"先进后出"符合(

2023-11-12 09:59:45 38 1

原创 浅谈C++常见字符串题目

替换:是把目标字符串中的一部分替换为我们想要的.这通常考验我们对代码的掌控力,能够设计出一种算法来实现对字符串的转换,就比如:上面说的反转单词这道题,我们要先处理字符串,将多余的空格去掉.这就很考验我们对代码的掌控力了,我们要尽可能考虑到各种情况,以便我们设计出算法不会出现BUG,方法上没有什么具体的方法公式,只能靠自己不断地练习了.字符串说白了就一个元素为字符的数组,但我们的函数库为其提供了丰富的函数,使其能够达到一些我想要的要求.对于常见的字符串问题,无非大体上就三种:移动,替换,匹配.

2023-11-04 10:18:52 42 1

原创 一道有趣的题----重复的子字符串

首先我们假设最长相等的前,后缀分别为L与R,由于L=R,所以L[0]=R[0],L[1]=R[1],而R[0]和R[1]又分别等于S[2]和S[3],所以得:L[0]=S[2],L[1]=S[3],即为:S[0]=S[2],S[1]=S[3],这出现了重复,所以可以得到这个小段"ab"就是我们所要找的子串.以上推导还有一个问题,就是:那为什么结果为false的s,s,szie()就不能整除(s.size-next[s.size()-1])?结果为:true(s由"ab"子字符串重复构成);

2023-11-03 13:33:57 42

原创 哈希表常用数据结构---set

unordered_set内部实现是哈希表,它插入的元素是无序的,且元素不能重复,但它的效率却是三者中最高的,它的查询,增删效率都是O(1)!若题目对元素顺序没什么要求,且元素不能重复,我们就可以使用unordered_set来作为哈希表了.数组有个缺点:它是静态的,分配多少空就只能有这么多空间.所以在将数据元素映射为数组的索引时,若元素的值比较大,那么映射的数组就需要很大,但结果存的有效数据就那么几个.这样会使得存储利用率太低了,而这时候就需要使用set了.

2023-10-29 10:07:43 100 1

原创 哈希表常用数据结构:数组

这题就是数组作为哈希表的一个很好的例子.由于都是小写字母,我们遍历t或者s得到每个字母只能是a~z,这些字母的ASCLL码值是连续的,这些连续ASCLL值很容易我让我们相当这跟数组连续的索引,但数组的索引是从0开始的,ASCLL码可不是啊.对此我们可以遍历字符串s,将每一个得到字符都-'a',这样每个字符所得到结果就都在[0,25]的范围内,接下我们就只需要创建一个长为26的数组,0索引代表字母a,1代表字母b........然后索引所对应元素为该字母出现的次数,这样就完成了哈希表的映射了.

2023-10-23 16:50:33 43

原创 浅谈装箱问题

对于这个问题分为两种类型:1.联机装箱问题:物品是一件一件来,我得装了一个物品才能得到下一个要装的物品,对于之后的物品如何我们是不知道的;装箱问题是一个非常经典的问题,问题如下:给定N项物品,大小为s1,s2,s3,s4.......sn,所有物品大小都满足:0<si<=1,然后将这些物品装进一个个容量为1的箱子,求怎么使得所用的箱子数是最小的?这是联机装箱问题中最简单的算法了,求到的结果一定是小于最优解的两倍的.对0.2, 0.5, 0.4, 0.7, 0.1, 0.3, 0.8装箱....

2023-10-17 17:13:19 84

原创 二分搜索法的详细讲解和易错点

首先这道给出的信息就已经很好的满足了二分搜索法的使用要求了,所以我们可是使用二分搜索来解决这道题.首先我们定义两个表示下标的int型变量:int left=0 int right=nums.size()-1,所以我们搜索的区间就[left,right],注意这是个左闭右闭的区间,这点很重要!若target>nums[num]--->表示target在数组的右半边区间内,那么同理它的搜索区间是[num+1,right](这也要注意不是[num,right]!),然后使left=num+1;

2023-10-08 10:06:15 82 1

原创 简单使用TexStudio写证明题

我们点击最左上角的选项,再点击第一个选项新建一个文件来开始我们的编写.在第一行我们需要添加"\documentclass"{article},其中的{}表示所编写的文章的格式article表示是文本.但是这样是不能编写中文的!若我们还需要表示一些特殊的数学关系,比如x^2或者sin(x),使最终呈现的文本与我们现实中所写的格式一致就需要用到特殊的代码,这里推荐大家搜索"在线LeTex公式编辑器",里面有所有的数学公式所对应的代码格式(注意这些代码要$$包裹起来,不然会err)

2023-10-05 18:33:47 162

原创 unordered_set与set的区别

可见插入的顺序是不会影响set最终存储元素的顺序的.另一方面对于unordered_set来说其在一般情况下其查找效率是要高于set的,其查找和删除等的操作的世间复杂度是常数级的,但是在级少数情况下set的可能要高于unordered_set(比如冲突较多的情况下).同时unordered_set由于其内部是用哈希表实现的,所以其内部存储的元素之间是没有什么逻辑顺序,这与set刚好反过来的,在实际的应用中我们可以根据是否要求数据之间的有序性来使用set或者unordered_set.

2023-10-05 11:23:09 1143

空空如也

空空如也

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

TA关注的人

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