自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ Primer第三章:字符串、向量和数组

一、getline(cin, line)返回的换行符实际上会被丢弃掉,而cin >> word读取字符串后则会把换行符留在输入流中。无符号数在和有符号数做计算时会将有符号数转为无符号数,此时如果有符号数是负数则会出现问题。三、字符串字面值在和字符串相加时要保证加号两边至少有一个不是字面值,因为C++中的字符串字面值并不是标准库string类型的对象(为了与C兼容)。一、vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型,例如vector。

2023-11-30 20:33:57 46

原创 C++ Primer第二章:变量和基本类型

一、预处理器概览确保头文件多次包含仍能安全工作的常用技术是预处理器,它由C++语言从C语言继承而来。预处理器是在编译之前执行的一段程序,可以部分地改变程序。当预处理器看到#include标记时就会用指定的头文件的内容代替#include#define指令把一个名字设定为预处理变量#ifdef当且仅当变量已定义时为真,#ifndef反之在头文件保护符中,一旦#ifdef或#ifndef的检查结果为真,则执行后续操作直至遇到#endif为止。

2023-11-29 21:48:53 38

原创 验证二叉搜索树:中序遍历

二叉搜索树(BST,Binary Search Tree),也称二叉排序树或二叉查找树。因此,验证二叉搜索树,相当于判断其中序遍历序列是否递增。

2023-11-28 14:07:08 77

原创 完全二叉树节点个数 & 对称二叉树

也就是说,递归函数需要接收两个节点作为参数,判断它们是否相等,并将问题分解为两部分:判断外部节点相等 & 判断内部节点相等。完全二叉树除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最底层的节点都集中在该层最左边的若干位置。具体的,如果一棵子树始终同时拥有最左侧节点和最右侧节点,则说明这棵二叉树是满二叉树,其节点数量是。如果子树不是满二叉树,就递归其左右子树,直到遇到满二叉树为止。但是,计算完全二叉树的节点个数,上图中的二叉树是对称二叉树。计算树的节点个数需要采用遍历的方法,时间复杂度为。

2023-11-24 15:29:32 223

原创 二叉树的最大/最小深度:后序遍历

搜索二叉树的最大/最小深度可以很简单地通过层序遍历解决,同时也可以通过深度优先搜索解决。将搜索二叉树最大/最小深度的问题分解为搜索其左子树/右子树的深度,可以发现后序遍历可以更简单地完成此任务。在二叉树的最大深度问题中,就是先递归地搜索当前根节点左右子树的最大深度,并将这两个深度中的最大值当作当前根节点的最大深度(最小深度问题的解法略有不同,

2023-11-24 12:25:29 347

原创 滑动窗口最大值:单调队列

单调队列的基本思想是,维护一个双端队列(deque),在遍历序列时,的解法,则需要始终维护滑动窗口中的最大值。以本题为例,实现这种数据结构的核心是,显然,此题的暴力解法的复杂度是。

2023-11-21 20:39:59 381

原创 翻转字符串中的单词:全局+局部翻转

在本题中,如果将整个字符串都反转过来,各个单词将会是倒序排列的,但是单词内部也倒序了。那么,再将每个单词的内部反转过来,即可满足题目要求。此外,本题还要求去除多余的空格,这里可以使用。如果允许使用辅助空间,本题的解决思路可以非常直接:使用split库函数分割单词,然后定义一个新的字符串,把分割好的单词倒序相加。很多字符串相关的操作都可以通过全局翻转+局部翻转的方法来解决,但是如果没接触过的话很难想到。当然,本题也可以先局部翻转,再全局翻转。的方法,不仅可以原地修改数组,代码通常也比较简洁。

2023-11-16 15:02:27 667

原创 替换字符串中的字符:双指针法

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将每个数字字符替换为“number”,而字母字符保持不变。实际上,很多数组填充类的问题,都需要先将数组扩容到填充后的大小,再从后向前填充内容。如果申请新数组,本题会非常简单。但是,若想原地修改字符串,暴力解法将花费。不使用额外的新数组,且复杂度为。的算法需要通过双指针实现。

2023-11-16 13:07:47 769

原创 四数之和:哈希和双指针

本题能够使用哈希法,是因为只需要输出所有符合要求的结果的个数,而不需要对结果进行去重。但是,如Leetcode 18(四数之和)这类问题,要求输出的结果不能重复,这时最好使用双指针法,从而避免繁琐的去重操作。在本题中,我们可以将四个数组分为两组,其中两个数组中所有元素对的和作为key,另外两个数组中所有元素对的和作为query。N数之和问题一般可以通过哈希法和双指针法解决,具体使用哪种方法需要根据问题判断。相似的for循环,并调整其中的剪枝策略。指针向左移动,直至两个指针相遇。其中,为去除重复,指针。

2023-11-15 01:03:49 763

原创 字母异位词:哈希数组

本题可以通过暴力方法解决:使用两层for循环,同时记录字母是否存在。显然,这种暴力解法的复杂度是。的情况下,可以使用数组实现哈希法。,哈希法往往是最优解(用空间换时间)。对应题目:Leetcode 242。

2023-11-13 21:39:37 880

原创 环形链表入口:双指针计算

分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。在判断链表有环后,我们唯一额外得到的信息是fast和slow指针相遇的节点,而我们的任务是寻找链表的入口节点。是循环的长度,我们可以将第二个公式变换为第三个公式,也就是。来表示,我们还需要引入fast节点循环的次数。如果链表有环,那应该如何寻找环的入口?,那么我们可以将问题转变成使用。显然,由于循环的存在,在第二个公式中,必有。

2023-11-13 12:48:15 913

原创 螺旋矩阵:循环不变量

求解螺旋矩阵问题依然要遵循循环不变量原则,按照固定规则(左闭右开或左开右闭)来遍历每一条边。模拟类问题在数组中很常见,这些问题不涉及特定的某类算法,但需要对代码有很强的掌控能力。解决螺旋矩阵问题,需要充分理解。循环不变量是指程序的循环在执行完成一个迭代的时候,程序中保持不变的性质。简单来讲,可以理解为。,否则在条件判断和边界控制时会毫无章法。例如,二分查找算法需要保证在循环中。对应题目:Leetcode 59。

2023-11-11 00:17:40 1098

原创 寻找最小长度子数组:滑动窗口

两个指针分别指向子数组的起始和终止位置。算法的思想是通过不断调节子数组的起始和终止位置,从而寻找符合条件的子数组。可以发现,滑动窗口的精妙之处在于根据当前子序列的大小,不断调节其起始位置。暴力解法使用两个for循环分别遍历滑动窗口的起始和终止位置,其复杂度为。可以只使用一个for循环来表示滑动窗口的起始位置,从而得到复杂度为。滑动窗口是数组操作中的一种重要方法。对应题目:Leetcode 209。

2023-11-10 17:44:54 600

原创 移除数组元素:快慢指针

最后,简单指出暴力解法中的易错点:在删除元素后,需要把便利指针的值减1,否则会遗漏移动到删除位置的元素。显然,移除数组中的特定元素,若使用暴力算法(先遍历查找再删除),则需要。:指向移除元素后的新数组中的元素,因此循环中的if语句判断条件为。数组占据连续的内存空间,数组元素的插入/删除操作的复杂度是。的算法,其核心是使用快慢两个指针。对应题目:Leetcode 27。这段代码看似抽象,其实只要理解。:遍历新数组长度内的元素,因此。本文介绍一个复杂度为。

2023-11-09 22:07:03 1223 1

原创 开源软件的版权与许可证

开源软件的“版权”和“许可证”是两个完全不同的概念。本文将介绍它们两者之间的联系和区别。1、计算机软件的版权软件版权属于知识产权。软件版权的所有者享有软件的发表权、署名权、修改权、复制权、发行权等权利。《伯尔尼公约》是关于著作权保护的国际条约,于1886年9月9日在瑞士伯尔尼制定。1992年10月15日中国成为该公约成员国。在支持《伯尔尼公约》的国家和地区,计算机软件会自动地受到版权法的保护,前提是该计算机软件的创作本身并不侵犯他人的版权。如果有人侵犯了计算机软件的版权,版权所有者有权提起诉讼,要求

2021-03-24 17:16:05 3851

原创 信息可视化中的重要准则——以扇贝单词app中的可视化为例

改进扇贝单词app中的信息可视化1、简介这篇博客是一个信息可视化的案例研究。这学期我们学习了一门信息可视化课程,发现信息可视化居然是一个非常有趣并且相当有挑战性的领域。在完成了这门课的学习后,我们迫不及待地想找到一些真实的、有影响力的可视化案例来实践一下我们的专业技能。但当我们从互联网上寻找有关数据可视化的案例研究时,我们感到有一些失望,因为网络上关于数据可视化的文章或博客基本上都在讨论一些很fancy很复杂的可视化。虽然它们确实很牛X并且有启发性,但对我们来说不是那么可实践。作为大学生,我们更想研

2020-12-14 20:12:37 2199 5

原创 在WSL中打开与显示图片的简单方法

使用WSL时,不能直接显示图片是件挺麻烦的事(尤其对于数据分析的相关工作而言)。但其实很容易就可以实现(不用安装图形化界面)。在Windows系统下载并安装VcXsrv(安装时可能会有安全提示,放心安装即可),WSL将通过它把图片输出到Windows并在屏幕上显示;安装的时候疯狂点next就完事了,无特殊需求使用默认设置即可。安装后启动XLaunch,还是按照默认设置启动就可以了。以后每次想...

2020-04-19 22:55:13 3208

空空如也

空空如也

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

TA关注的人

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