自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串哈希

字符串哈希,就是将字符串映射到数字的过程。这里使用的思想类似于一个base进制的数字,每个字符用不同的数字代替,而不同的位置代表所在数字的不同位置,用此方法便可将字符串映射成数字了。,这样在一般情况下(99.9%)不会发生冲突,也可以使用双hash方法,将同一个字符串用不同的base和mod,hash两次,用一个二元组表示,这样会大大降低冲突概率。值得注意的是,不能有字符的哈希值为0,例如,若’A’的哈希值为0,则"A"和“AA”的哈希值同时会为0。的字符串,字符串中只包含大小写英文字母和数字。

2023-09-06 01:15:56 71

原创 KMP字符串

这样就可以跳过不必要的S中已匹配部分,且在匹配过程中。,所有字符串中只包含大小写英文字母以及阿拉伯数字。保存的是在字符串P中相同的前后缀的最大长度,若。共一行,输出所有出现位置的起始下标(下标从。开始计数),整数之间用空格隔开。中所有出现的位置的起始下标。若用暴力做法,则时间复杂度为。算法,时间复杂度则能降为。这样在匹配的过程中,若。中多次作为子串出现。先解释下next数组,

2023-09-05 23:26:20 56

原创 最短路径算法

采取的方法是动态逼近法:设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开u点所指向的结点v进行松弛操作,如果v点的最短路径估计值有所调整,且v点不在当前的队列中,就将v点放入队尾。将所有的点分为已确认最短路径和未确认最短路径两个集合,每次从未确认最短路径中找到距离起始点最短的那个点,将其加入到已确认最短路径集合,接着用该点更新起始点到与该点相连的距离,重复上述步骤,直到找到起始点到终点的最短距离。条边的有向图,图中可能存在重边和自环,

2023-09-03 19:29:06 64

原创 扩展欧几里得

那么对于任意的整数。的倍数,且一定存在整数。

2023-03-08 20:50:08 56

原创 扩展欧几里得

那么对于任意的整数。的倍数,且一定存在整数。

2023-03-08 20:44:11 35

原创 判断一个数是否为质数

利用这种特性,可以对整数进行筛选,只判断那些是。(大于等于5的)质数一定和6的倍数相邻,即一定是。也不为质数,因此质数只能是。为偶数,一定不为质数,且。, 在每组的整数中,

2023-03-07 21:38:50 51

原创 计数质数个数

当然这里还可以继续优化,对于一个质数 x,如果按上文说的我们从 $2x $开始标记其实是冗余的,应该直接从 $x⋅x $开始标记,因为 $2x,3x,…另一方面,当从小到大遍历到数 x 时,倘若它是合数,则它一定是某个小于 x 的质数 y 的整数倍,故根据此方法的步骤,我们在遍历到 y 时,就一定会在此时将 x 标记为。从小到大遍历每个数,如果这个数为质数,则将其所有的倍数都标记为合数(除了该质数本身),即 0,这样在运行结束的时候我们即能知道质数的个数。,而是只标记质数集合中的数与 x 相乘的数,即。

2023-03-07 17:47:35 34

原创 leetcode204.计数质数

当然这里还可以继续优化,对于一个质数 x,如果按上文说的我们从 $2x $开始标记其实是冗余的,应该直接从 $x⋅x $开始标记,因为 $2x,3x,…另一方面,当从小到大遍历到数 x 时,倘若它是合数,则它一定是某个小于 x 的质数 y 的整数倍,故根据此方法的步骤,我们在遍历到 y 时,就一定会在此时将 x 标记为。从小到大遍历每个数,如果这个数为质数,则将其所有的倍数都标记为合数(除了该质数本身),即 0,这样在运行结束的时候我们即能知道质数的个数。,而是只标记质数集合中的数与 x 相乘的数,即。

2023-03-07 17:09:28 37

原创 leetcode204.计数质数

当然这里还可以继续优化,对于一个质数 x,如果按上文说的我们从 $2x $开始标记其实是冗余的,应该直接从 $x⋅x $开始标记,因为 $2x,3x,…另一方面,当从小到大遍历到数 x 时,倘若它是合数,则它一定是某个小于 x 的质数 y 的整数倍,故根据此方法的步骤,我们在遍历到 y 时,就一定会在此时将 x 标记为。从小到大遍历每个数,如果这个数为质数,则将其所有的倍数都标记为合数(除了该质数本身),即 0,这样在运行结束的时候我们即能知道质数的个数。因此,这种方法也不会将合数标记为质数。

2023-03-07 13:21:26 36

原创 判断一个数是否为质数

(大于等于5的)质数一定和6的倍数相邻,即一定是。利用这种特性,可以对整数进行筛选,只判断那些是。也不为质数,因此质数只能是。为偶数,一定不为质数,且。, 在每组的整数中,

2023-03-07 12:58:24 95

原创 树状数组和线段树求动态数组的连续区间和

给定 n个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b][�,�] 的连续和。, (k=0,表示求子数列[a,b]的和;k=1,表示第 a个数加 b)。输出若干行数字,表示 k=0 时,对应的子数列 [a,b] 的连续和。数据保证在任何时候,数列中所有元素之和均在 int 范围内。,分别表示数的个数和操作次数。行,每行包含三个整数。个整数,表示完整数列。数列从 1 开始计数。

2023-02-24 11:29:13 50

原创 最小堆(MinHeap)

假设某一集合将所有元素按完全二叉树的顺序结构存放在一维数组中,并且在二叉树中每个节点都小于或等于其子节点,则称这个集合为最小堆。若用数组来存储一个完全二叉树,某个节点在数组的下标为i:向上和向下调整函数向上和向下调整函数是类中的私有函数,主要功能是将堆中的某个元素向上或向下调整使其放置到合适的位置。向上调整函数是从某个子节点开始,沿其父节点寻找,直至找到父节点比其小的位置或者达到根节点,否则就一直将其与其父节点交换位置。向下调整函数向下调整函数与向上调整函数类似,从某个节点开始向下调整,将其子节点中

2022-10-24 21:59:34 1127

原创 队列(queue)

{public:}//若队列不满 则将x入队 否则进行对溢出处理//若队列不为空 则函数返回true及队头元素并将队头元素出队 否则返回false//若队列不为空 则函数返回true及队列头元素的值 否则返回false//判断队列是否为空//判断队列是否已满//返回队列中元素个数protected:int front;//队尾指针int rear;//队头指针//存储队列的数组//最大可容纳元素个数};

2022-10-24 20:13:11 273

原创 vs2019打包exe

首先要在vs里面安装Setup Project扩展。添加刚刚复制解决方案路径下的所有文件。选择Setup Project。将快捷方式放入Desktop。右键解决方案选择新建项目。打开解决方案并复制路径。创建项目输出的快捷方式。重新生成解决方案并安装。

2022-10-03 17:47:05 1312

原创 终端下运行Java

此时会出现一个与文件名同名的class文件,输入java + 文件名。输入命令:javac + 文件名.java。打开终端,并定位到存放代码的目录下。先创建Java文件,编写代码。

2022-09-01 17:38:20 832

原创 DOS常用命令

在任意文件夹下面,按住shift键+鼠标右键+点击在此处打开powershell窗口。#切换目录 cd(change directory)#不同盘之间的切换 cd /d C: 切换到C盘。#清理屏幕 cls(clear screen)#查看当前目录下的所有文件 dir。资源管理器的地址栏前加cmd路径。#删除文件 del>文件名。#进入目录 cd 文件名。#创建目录 md+目录名。#创建文件 cd>文件名。#删除目录 rd+目录名。#返回上一级 cd..#退出终端 exit。...

2022-08-29 21:45:01 32

原创 Typora使用技巧

标题:# 一级标题、## 二级标题以此类推,或者可以在输入标题后按下Ctrl+数字来设置标题等级,最多可以设置到六级标题。引用:在一段文字前加> ,效果如下:分割线:---或***图片:![图片名字](图片路径) 图片路径可以是本地的或者是网页上的,感叹号!...

2022-08-29 20:58:41 177

原创 反转链表.

剑指 Offer 24. 反转链表定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000作者:Krahets链接:https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/9pdj.

2021-11-18 20:12:51 703

原创 BST(二叉树)

概述树 是一种经常用到的数据结构,用来模拟具有树状结构性质的数据集合。树里的每一个节点有一个值和一个包含所有子节点的列表。从图的观点来看,树也可视为一个拥有N 个节点和N-1 条边的一个有向无环图。二叉树是一种更为典型的树状结构。如它名字所描述的那样,二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。完成后,你将:掌握树和二叉树的概念熟悉不同的遍历方法运用递归解决二叉树相关题目树的遍历在上节的介绍中,相信大家已经熟知了树和二叉树的基本概念。本章节,

2021-11-13 15:56:15 847

原创 LeetCode第5周

700.二叉搜索树中的搜索给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值: 2你应该返回如下子树: 2 / \ 1 3在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。...

2021-11-03 15:43:06 40

原创 Stack(栈)

Stack-Array Implementation代码:Ubuntu Pastebin先定义栈对象并定义一些简单的函数:接着再写在栈中加入元素,删除元素,以及获取栈顶元素的函数:最后看下运行结果:Stack-Linked List implementation同样,我们先创建对象并定义一些简单的函数:再定义在栈中添加和删除元素的函数:...

2021-10-26 19:08:50 44

原创 Queue(队列)

Queue - Array Implementation代码:Ubuntu Pastebin我们创建一个队列的对象和写一些最基本的函数:我们先写一个在队列中插入元素的函数:先创建一个长度为2的队列,再给它插入三个值,结果如下:接着再写一个删去队尾元素的函数:运行:可以看到本来已经满了的队列,此时又可以添加新的元素了。接着再写输出队列头部和尾部的函数:最后再来总体运行一次:Queue-Linked List Imple...

2021-10-26 16:20:54 71

原创 LeetCode第4周

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0....

2021-10-25 20:47:38 60

原创 LeetCode第3周

2.两数相加给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例...

2021-10-21 19:13:07 45

原创 Linked list(链表)

Linklist代码:Ubuntu Pastebin我们先定义两个结构,分别是节点和链表。节点包含要储存的数据和下一节点的位置,链表则包含链表的头节点和尾节点。如下图:我们先在main函数里定义一个链表,链表的头部不储存数据,只储存下一个节点的位置,因此我们初始化头节点指向为空,初始化尾节点也为空。我们再来定义两个基本的函数来对链表进行一些操作,分别是插入数据到链表尾部和遍历链表并输出其他的数据。如下:接下来我们就可以对链表进行尾插操作并输出链表中存储的数据了,如下:..

2021-10-18 19:45:38 131

原创 LeetCode第2周

4. 寻找两个正序数组的中位数难度困难4541给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) ...

2021-10-08 17:57:09 33

原创 LeetCode第1周

1,两数之和给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:...

2021-10-03 13:48:34 72

原创 图灵班第一周作业,一些排序和查找

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉。冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交...

2021-10-02 19:36:47 72

空空如也

空空如也

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

TA关注的人

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