自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【JavaScript】对象解构

对象解构是ES6中新增的语法,可以在一条语句中使用嵌套数据实现一个或多个赋值操作。简单说,对象解构就是使用与对象匹配的解构来实现对象属性赋值。先看一个不使用对象解构的例子将中的和分别赋值给和。接下来看使用对象解构的例子在这里将赋值给,赋值给,如果想让变量直接使用属性名称,也可以使用简写语法:正确写法应该是注释中的代码,是person中没有定义的变量,因此它的输出为如果想在解构时引用当前对象不存在的属性,也可以在解构赋值的同时定义不存在属性的默认值:解构在内部使用函数把源数据结构转换为对象,在对象

2023-12-11 16:16:10 496

原创 【Vue】props与$emit的简单理解

<button>按钮</button>

2023-12-09 16:24:53 933

原创 数据结构【栈】

栈的简单笔记

2022-08-21 13:15:00 366 2

原创 【考研数学】微分中值定理计算极限专题

微分中值定理微分中值定理大家庭中有特别多定理,但是在计算极限时,常用的微分中值定理只有一个:拉格朗日中值定理拉格朗日中值定理介绍如果f(x)f(x)f(x)满足以下条件:(1) 在闭区间[a,b][a,b][a,b]上连续;(2) 在开区间(a,b)(a,b)(a,b)内可导;则在(a,b)(a,b)(a,b)内至少存在一点ξ\xiξ,使得f(b)−f(a)=f′(ξ)(b−a)f(b)-f(a)=f'(\xi)(b-a)f(b)−f(a)=f′(ξ)(b−a)此处不予证明(可用罗尔定理构

2021-11-27 00:52:48 2974 2

原创 C++数据结构与算法分析——快速幂

幂运算幂运算是是一种幂的运算,它有一个性质:同底数幂相乘,底数不变,指数相加求幂运算的朴素做法O(k)O(k)O(k)假设此时我们需要求底为a,指数为k的幂的值,即求res=akres = a^kres=ak,那么我们很容易想到最直接的做法:令res=1res = 1res=1,让res乘以k次a即可得到答案。代码:int power(int a,int k){ int res = 1; while(k --) res *= a; return res;}容易看出,它总共进行了k次运算

2021-10-25 23:52:38 367

原创 C++数据结构与算法分析——数论之素数(质数)

素数的定义素数又称为质数,是一个大于1的自然数,它满足以下性质:不能被除了1和它本身之外的其它自然数整除。即在所有自然数中,它只有1和它本身两个约数。素数计数函数我们用π(n)\pi(n)π(n)来表示小于等于n中所有素数的个数,当n越大时,π(n)∼nln(n)\pi(n) \sim \frac n{ln(n)}π(n)∼ln(n)n​。该统计学性质可以用来帮助我们判断时间复杂度要求,以及选用什么算法。素数的判定假设需要判定一个自然数x是否为素数暴力法O(n)O(n)O(n)由于素数和合数

2021-10-20 23:23:10 1191

原创 C++数据结构与算法分析——Trie树

Trie树介绍Trie树,也叫字典树,前缀树。是一种用于实现字符串快速检索的多叉树数据结构。它支持两种操作:在树中插入一个字符串字符串检索Trie树的每个节点都拥有若干个字符指针,它可以用来插入字符串或者进行字符串检索。Trie树的基本操作初始化Trie树刚开始时只有一个根节点,它的所有指针均指向NULL。根节点并不存储信息,只作为树的标识,进行字符串插入和检索时从根节点进入并扫描其节点,原因也容易理解,根节点只有一个,所以只能存储一个字符,如果要在根节点存入字符的话,就需要开多棵Tri

2021-10-19 19:45:32 415 2

原创 C++数据结构与算法分析——Floyd算法

介绍Floyd算法是一种求多源汇最短路的算法,它可以求出任意两点间的最短距离(如果这两点连通的话),并且Floyd算法非常容易实现:算法模板O(n3)O(n^3)O(n3)for(int k = 1; k <= n; k ++) for(int i = 1; i <= n; i ++) for(int j = 1; j <= n; j ++) d[i][j] = min(d[i][j],d[i][k] + d[k][j]);它总共有3层循环,每层n次,所以时间复杂度为

2021-10-15 19:28:59 3003

原创 C++数据结构与算法分析——分支限界法(BFS求解01背包问题)

分支限界法介绍分支限界,又叫分支定界,是一种系统搜索解空间的方法。它是BFS的一种剪枝。在DFS中我们已经知道,在DFS中有隐含的搜索树存在,BFS中同样也有(分析题目时用)分支限界,分为两个剪枝:分支和限界。分支:即可行性剪枝,当遍历到一个点时,判断它是否符合题意,如果不符合,那么则将这个分支剪去。限界:即最优性剪枝,这需要一个估价函数来判断当前遍历到的点是否有可能得到最优解,如果不可能得到最优解,那么该分支也可剪去。这么说也许有些抽象,当前我们选择01背包作为例子:例题题目描述有N

2021-10-10 01:11:39 6564 1

原创 C++数据结构与算法分析——DFS(深度优先遍历)

介绍递归递归是算法的一种基本思想,它是在程序中不断反复调用自身来达到求解问题的方法,这需要问题具有一个性质:待求解问题可以分解为相同的若干个子问题,这样它才能调用自身。递归例题题目描述输入一个整数n,请你编写一个函数,int fact(int n),计算并输出n的阶乘。输入格式共一行,包含一个整数n。输出格式共一行,包含一个整数表示n的阶乘的值。数据范围1≤n≤101≤n≤101≤n≤10输入样例:3输出样例:6样例解释3!=3∗(2!)=3∗2∗(1!)=3∗2∗1=

2021-10-04 00:37:36 649

原创 C++数据结构与算法分析——最长上升子序列问题

最长上升子序列问题例题题目描述给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤10001≤N≤10001≤N≤1000,−109≤数列中的数≤109−10^9≤数列中的数≤10^9−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4样例解释输入的序列中最长上升子序列为1,2,5,6,长度为4因此输出4.解题思路

2021-09-24 23:42:45 1054

原创 C++数据结构与算法分析——01背包问题

01背包问题介绍01背包问题其实在我之前的博客中略有提及。01背包的问题描述大致如下:有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是viv_ivi​,价值是 wiw_iwi​。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。...

2021-09-21 19:52:17 1026 2

原创 C++数据结构与算法分析——Kruskal算法

Kruskal算法介绍Kruskal算法也是基于贪心算法证得的。虽然Kruskal算法与Prim算法都是求最小生成树的算法,但是它们的操作不太一样。Prim算法是先找到一个点作为一个集合,找到离它最近的点,将它加入集合。而Kruskal则是将所有边的边权从小到大排序,然后遍历所有边,如果两个点不在同一集合内,则将两个点加入到同一集合,如果两个点已经遍历过,则不操作。最后如果集合内的边数为n - 1则说明生成了最小生成树,否则没有。说明如何将两个点加入到同一集合呢?在并查集中已经说过了,并查集可以完成

2021-09-15 09:38:08 293

原创 Android开发语言——Kotlin学习笔记

Kotlin本Blog是我学习《Android第一行代码-第三版》的学习笔记,将会不定期断更持续更新。(默认大家都和我一样学过C++或Java的基础语法)。Kotlin简介在Android诞生的前几年中,Java一直是Android的主要开发语言。在2017年,Google在I/O大会上宣布,Kotlin正式成为Android的一级开发语言,与Java平起平坐,同时Android Studio也对Kotlin进行了全面的支持。2019年,Google在I/O大会上宣布,Kotlin已成为Androi

2021-09-14 11:25:17 1219

原创 C++数据结构与算法分析——BFS(宽度优先遍历)

BFS介绍BFS也叫宽度优先遍历,广度优先遍历,宽度优先搜索,广度优先搜索,是一种常用的搜索手段。

2021-09-13 15:30:54 2771 1

原创 C++数据结构与算法分析——并查集

并查集介绍并查集是一种树形的数据结构,用来表示不相交集合。每棵树都代表一个不同的集合,树中的每个节点都是集合中的一个元素。每个节点都有一颗指向父节点的指针p,而根节点的p指针则指向自己。操作get/find : 查询集合a属于哪个集合merge : 合并两个集合如何实现这两个操作首先我们可以看到有两个集合root1和root2,我们仔细观察很容易发现一棵树中的根节点最特殊,因为它的父节点指针指向自己,而且所有节点的父节点指针只要一直指下去必然会指到根节点。因此我们发现,要判断集合a属于哪

2021-09-12 14:52:42 322

原创 C++数据结构与算法分析——单链表(数组实现)

单链表介绍链表是用来存储具有相同性质的数据的集合,每个具有该性质的数据单位成为节点(Node)。单链表的定义单链表具有两项基本要素,单链表内的数据项val和后驱节点next,因此最简单的单链表节点的结构体定义为:struct Node{ // 节点定义 int val; // 单链表内存储的数据项 Node *next; // 后驱节点,指向下一个节点};为什么要用数组模拟链表我们知道用结构体实现链表时我们创建新节点需要用到new,例如:Node A = new Node(NULL)

2021-09-11 21:12:24 612

原创 C++数据结构与算法分析——Prim算法

Prim算法介绍最小生成树最小生成树是指在一个无向图连通中求得连通所有点的一条路径,且这条路径的所有边的权值之和最小,此时无向图的这个子图便称为最小生成树Prim算法prim算法是图论中用来求最小生成树的算法,与Dijkstra最短路算法求每个点到起点的最短距离不同,prim算法需要求的是每个点到最小生成树的这个集合的最小距离步骤初始化所有点到最小生成树的距离为∞(0x3f3f3f3f)进行n次迭代,每次求出集合外距离最小生成树最短的点,加入最小生成树集合求出距离集合距离最短的点t,若它

2021-09-09 00:12:03 557

原创 C++数据结构与算法分析——Dijkstra算法

Dijkstra算法介绍Dijkstra算法是图论中用来求最短路的算法。这个最短路求的是起点1到终点n的最短距离dist[n]。它通过贪心的思想每次求出距离起点最短的点t,然后对其它所有未确定最短路的点的最短距离进行更新。当所有点都确定过最短路时,只需要将dist[n]取出即为起点1到终点n的最短路。步骤初始化所有点到起点1的最短路dist[i] = ∞(0x3f3f3f3f),dist[1] = 0(起点到起点距离为0)进行n次循环,每次求出一个点的最短路并更新其他路的最短路求出所有点中距离

2021-09-06 09:30:19 339

原创 C++数据结构与算法分析——二分查找

二分查找介绍二分查找,也叫折半搜索、对数搜索。是用来在一个有序数组中查找一个数的算法。例题题目描述给定一个n个元素有序的升序整型数组nums和一个目标值target,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出:

2021-09-06 01:06:10 408

原创 C++数据结构与算法分析——树状数组

树状数组介绍我们此前已经了解过前缀和与差分,在数组中,求前缀和的时间复杂度为O(n)O(n)O(n),查询元素的时间复杂度为O(1)O(1)O(1)。在前缀和数组中,求前缀和的时间复杂度为O(1)O(1)O(1),查询元素的时间复杂度为O(n)O(n)O(n),这两种数组的时间复杂度都是根据其最高的时间复杂度来确定的,即O(n)O(n)O(n),那么有没有可能采取一个折衷的办法让修改和查询操作都不至于那么慢呢?树状数组出现了。树状数组是一种高级数据结构,它主要支持两种操作:快速修改数组中的一个数a

2021-08-26 16:50:41 177

原创 C++数据结构与算法分析——lowbit操作

lowbit介绍lowbit操作是求出非负整数x的最后一位1所表示的数值。原理假设有一个非负整数x,我们知道x的负数用二进制表示是x取反+1以121212为例,12=110012 = 110012=1100,−12=0011+1=0100-12 = 0011 + 1 = 0100−12=0011+1=0100也就是说要求出x的最后一位1,只需要求x&−xx\&-xx&−x即可,因为它们除了最后一位1相同其他数字都相反。因此可以求出lowbit(12)=1002=410l

2021-08-26 15:04:11 2074

原创 C++内部排序算法总结(2)

桶排序(计数排序)算法原理桶排序是设置m个桶,每个桶记录从0到N中的单个元素出现的次数,即第i个桶记录数字i出现的次数,然后将桶里的数放到数组中即可。那么如何将桶里的数放到原数组中呢?首先我们知道,1号桶的元素一定都在2号桶前面,假如有10个1和1个2,那么2的下标10 + 2 - 1,因此我们只需要算出每个数对应的前缀和,然后就能求出每个数对应的下标了。注意:因为是按顺序遍历,因此同一个数中越靠后的数会在越上面,例如1,1',s[1] = 1时放入的是1,s[1] = 2时放入的是1',因此在将桶

2021-08-22 17:47:05 74

原创 C++内部排序算法总结(1)

第11讲 排序1. 算法的稳定性权值相等的两个数再排序之后如果相对顺序会发生变化,则为不稳定排序,否则为稳定排序。例如:将 2 1’ 1’’ 3进行排序若排序后结果为 1’ 1’’ 2 3,则为稳定排序,若为1’’ 1’ 2 3,则为不稳定排序。2. 插入排序(1) 直接插入排序算法原理遍历一遍数组,第一个元素不动,第二个元素开始,从当前元素往前遍历,如果遍历的元素大于需要插入的元素,则让当前元素往后移一位,直到遇到不大于待插入数的时候,将待插入数插入当前位置。例有n = 5的数组3,1

2021-08-21 23:37:46 347

原创 C++数据结构与算法分析——前缀和与差分

前缀和定义假定有一数组a[1]∼a[n]a[1] \sim a[n]a[1]∼a[n],前缀和s[i]s[i]s[i]就是前i项的和。例如s[1]=a[1]s[1] = a[1]s[1]=a[1]s[2]=a[1]+a[2]s[2] = a[1] + a[2]s[2]=a[1]+a[2]s[n]=a[1]+a[2]+......+a[n]s[n] = a[1] + a[2] + ...... + a[n]s[n]=a[1]+a[2]+......+a[n]应用由此我们可以得到,若要求得数

2021-07-31 22:55:08 237

原创 数据结构考研笔试——时间复杂度

时间复杂度时间复杂度是只考虑次数,不考虑常数的,这点可以与微积分的无穷大类比,当n−>∞n->∞n−>∞时,无论常数k有多大,都可以将其省略。

2021-07-16 18:59:04 1677

原创 C++数据结构与算法分析——快速排序

快速排序介绍快速排序也叫快排,讲究的是一个快字。它是分治思想的一个应用,即:将一个多数据的数组排序问题转换为一个一个数据的排序,每个数据排序后得到的数组即是排序后的数组。原理假设有一个数组a[n]a[n]a[n],数组中元素为a[0]a[1]......a[n−1]a[0]a[1]......a[n-1]a[0]a[1]......a[n−1]快速排序就是在这个数组中随机找到一个“哨兵”值a[k]a[k]a[k]然后将a[0]∼a[k−1]a[0] \sim a[k-1]a[0]∼a[k−1]存

2021-07-16 16:58:25 173

原创 Leetcode 刷题1.两数之和

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

2021-06-22 18:06:32 109

原创 遗传算法求解01背包问题

遗传算法求解01背包这是我本学期人工智能的一次大作业,思想可以延续,但是代码仅适用于这种情况,如题。题目描述任务描述:有N件物品和一个容量为V的背包,第i件物品的重量是w[i],价值是v[i],求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值的总和最大。现在有一个背包,可以放置80公斤的物品,有以下六件物品。物品重量价值110152152532030425505305563575请用遗传算法求解上述

2021-06-22 00:59:09 3262 2

原创 ACWing 刷题766.去掉多余的空格

ACWing 766.去掉多余的空格题目描述输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。输入格式共一行,包含一个字符串。输出格式输出去掉多余空格后的字符串,占一行。数据范围输入字符串的长度不超过 200。输入样例Hello       world.This is    c language.输出样例Hello world.This is c language

2021-06-21 21:05:48 190

原创 Leetcode 刷题389. 找不同

Leetcode 389.找不同题目描述给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例1输入:s = “abcd”, t = “abcde”输出:“e”解释:‘e’ 是那个被添加的字母。示例2输入:s = “a”, t = “aa”输出:“a”提示:0 <= s.length <= 1000t.length == s.length + 1s 和 t 只包含小

2021-06-21 13:25:41 489

原创 Leetcode 刷题374.猜数字大小

Leetcode.374猜数字大小题目描述猜数字游戏的规则如下:每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):-1:我选出的数字比你猜的数字小 pick < num1:我选出的数字比你猜的数字大 pick > num0:我选出的数字和你猜

2021-06-20 16:52:04 186

原创 ACWing 刷题1.A+B

ACWing 1、A + B题目描述:输入两个整数,求这两个整数的和是多少。输入格式:输入两个整数A,B,用空格隔开,0 ≤ A,B ≤ 10810^8108输出格式:输出一个整数,表示这两个数的和样例输入3 4样例输出7解题思路只要对 A,B两个数进行加法计算,因此其时间复杂度为O(1),且加法得出最高值只有2∗1082*10^82∗108,因此只需要用int即可。代码#include<iostream>using namespace std;int

2021-06-19 03:11:53 319

2154042532系统映像处理.exe

2154042532系统映像处理.exe

2023-10-28

空空如也

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

TA关注的人

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