- 博客(24)
- 收藏
- 关注
原创 c++ IO库
因为流可能处于错误状态,因此代码通常应该在使用一个流之前检查它是否处于一个良好的状态。fsream::inFile(“read.txt”, std::ios::in) 来定义读模式;不带std::ios::app,默认为截断模式打开文件,即将文件中原来的内容丢弃,再写入数据;输出流对象,iostream::cout ,用于向设备写入数据;输入流对象,iostream::cin , 用于从设备读取数据;而std::ios::app则是在原来数据的基础上继续写入数据。从文件中读取数据,向文件中写入数据;
2024-04-28 17:05:34
753
原创 Let‘s go
它会跳过输入中的空白字符(如空格、制表符等),然后尝试读取并解析一个值。否则,如果输入不符合变量的类型,或者遇到输入流的结束,输入流的状态会被置为失败状态,读取操作失败。iostream库 中包含了两个基本的类,istream输入流基类,ostream输出流基类,分别表示输入流和输出流。,右侧的运算对象是要打印的值。通常与输出流对象一起使用,用于将数据插入到输出流中,以便输出到特定的目标上(控制台、文件、字符串等)。“ >> ”输入运算符,用于从输入流中提取数据并将其存储到变量中,通常与。
2024-04-25 10:03:27
325
原创 基于vscode的c++开发(Windows)
链接器将各个目标文件中的符号引用解析为实际的内存地址,并且将程序所需要的库文件链接到最终的可执行文件中。语法: add_library(libname [SHARED|STATIC|MODULE] [EXCLUDE_FROM_ALL]语法: add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])GCC编译器支持编译go、c、c++等语言。语法: : project(projectname [CXX] [C] [Java])
2024-04-24 10:06:36
1136
原创 关于相机与镜头的选型
根据被测物体的大小和所选相机的参数,我们可以得到物像关系,根据物象关系可以进行镜头的选型。,那么相机的分辨率等于108*3=324万像素,因此使用324万像素的相机较为合适。75 * 0.7038 = 52.785mm 可以选用焦距为50mm的镜头。(12/0.01)* (9/0.01)=108万像素。焦距 / 物距 = 50 / 75 = 0.667。焦距 = 物距 * 光学放大倍率。,在实际的使用中一般用。
2024-03-18 16:22:24
1603
原创 CMakeLists.txt基本模板
在进行软件开发时,cmake是一款非常好的工具,因为它可以帮我们生成MakeFiles文件,MakeFiles是一个可以帮我们指定编译规则的文件,但是MakeFiles编写起来往往十分复杂。因此我们可以借助cmake来帮我们生成MakeFiles文件。下面是CMakeLists.txt的基本模板。
2024-03-17 14:10:36
553
1
原创 蓝桥杯Python组知识点
用哈希表计数的时候,若当前元素不存在,则置为1;但是用defaultdict直接+1就行,不需要判断,因为创建defaultdict的时候已经规定了默认值类型。判断一个数是否为质数,可以通过暴力算法求得,而对于求(n, m)范围内,不包括m,质数的个数,可以通过埃氏筛来求取。求两个数的最大公因数可以通过math.gcd(n,m)获取,同时也可以定义辗转相除法获取。python中的堆是小顶堆,如果是二维列表,默认以每个列表的第一个元素来排序。4)heapreplace从堆中弹出最小的元素,再压入一个新元素。
2024-02-25 16:05:09
1955
1
原创 算法刷题——接龙数组
AK,我们称之为接龙数列当且仅当 Ai的首位数字恰好等于 Ai-1 的末位数字(2 <i< K)。例如 12,23,35,56,61,11 是接龙数列;12.23,34,56 不是接龙数列,因为 56 的首位数字不等于 34 的末位数字。建立状态转移方程:dp[int(str(lst[i])[-1])] = max(dp[int(str(lst[i])[0])] + 1, dp[int(str(lst[i])[-1])])动态规划问题,将最少删除次数转变为求解最长接龙数列长度,即建立对立面的问题。
2024-02-23 11:46:41
546
1
原创 算法刷题——近似最大公因数
小蓝有一个长度为 n 的数组 A = (a1, a2, · · · , an),数组的子数组被定义为从原数组中选出连续的一个或多个元素组成的数组。数组的最大公约数指的是数组中所有元素的最大公约数。如果最多更改数组中的一个元素之后,数组的最大公约数为 g,那么称 g 为这个数组的近似 GCD。一个数组的近似 GCD 可能有多种取值。可以使用python标准库math库中的gcd函数来实现。gcd函数实质上是通过辗转相除法实现的。双指针法,每个子数组中至多只能有一个不满足条件的元素。
2024-02-23 11:28:04
482
1
原创 算法刷题——求质数个数
如果需要判断的元素较多可以通过建立埃氏筛来求解质数,如果元素数量较少则可以通过暴力求解来判断一个数是否为质数。1、埃氏筛法:如果x是质数,那么大于 x 的 n 的倍数 2x,3x,…2、暴力求解法:质数是一种因数只有1和它本身的数。简而言之就是,找一个.txt文件中质数的个数。
2024-02-23 10:54:57
468
1
原创 算法刷题——拿出最少数目的魔法豆(力扣)
给定一个正整数 数组beans ,其中每个整数表示一个袋子里装的魔法豆的数目。请你从每个袋子中拿出 一些豆子(也可以 拿出),使得剩下的。袋子中(即至少还有一颗魔法豆的袋子)魔法豆的数目相等。一旦把魔法豆从袋子中取出,你不能再将它放到任何袋子中。暴力求解,先对数组进行排序,然后从小到大分别以不同数量的豆子作为基准(非空袋子中剩下的豆子数量),求解答案。O(logn),即为排序的栈空间开销。O(logn),即为排序的栈空间开销。请返回你需要拿出魔法豆的最少数目。O(nlogn),排序算法。
2024-01-18 22:44:23
652
1
原创 算法刷题——最大字符串配对数目(力扣)
对于其它语言,我们可以存储字符串的哈希值,改为判断words[i]的反转字符串的哈希值是否存在。我们将第 0 个字符串与第 2 个字符串匹配,因为 word[0] 的反转字符串是 “dc” 并且等于 words[2]。我们将第 1 个字符串与第 3 个字符串匹配,因为 word[1] 的反转字符串是 “ca” 并且等于 words[3]。我们将第 0 个字符串与第 1 个字符串匹配,因为 words[1] 的反转字符串 “ab” 与 words[0] 相等。输入:words = [“aa”,“ab”]
2024-01-17 20:10:09
1183
原创 算法刷题——二叉树的层序遍历(力扣)
二叉树的层序遍历。广度优先搜索遍历通常是借助“队列”来实现的。队列遵循先进先出的规则,而广度优先搜索则遵循“逐层推进”的规则,两者之间背后的思想是一致的。:给你二叉树的根节点root,返回其节点值的 层序遍历。输入:root = [3,9,20,null,null,15,7]队列中元素的个数不超过n个,故渐进空间复杂度为O(n)。每个点进队出队各一次,故渐进时间复杂度为O(n)。输出:[[3],[9,20],[15,7]]输入:root = [1]输入:root = []
2024-01-16 09:56:17
542
1
原创 ACM模式与核心代码模式
蓝桥杯解决算法问题采用的ACM模式。我们平时所用的刷题网站主要分为ACM模式,和核心代码模式,下面阐述一下ACM模式与核心代码模式的区别。ACM模式就是需要自己输入数据的格式,将数据填充到需要处理的容器中,OJ系统不提供任何代码,包括include头文件,导入第三方库import,都需要自己填写。最后还需要自己控制返回的数据格式。国内采用ACM模式的网站有牛客网。python主要通过input()函数实现数据的输入,input()会读取控制台的一行输入,如果输入多行则需要使用多个input()。注意在py
2024-01-15 12:53:11
4775
1
原创 算法刷题——寻找数组的中心下标(力扣)
记数组的全部元素之和为total,当遍历到第i个元素时,设其左侧元素之和为 sum,则其右侧元素之和为 total−numi−sum。左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,右侧数之和 sum = nums[1] + nums[2] = 1 + -1 = 0。,其中sum为前缀和(左侧和),numi第i个元素的值,total为全部元素之和。数组中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。
2024-01-14 23:25:39
947
1
原创 算法刷题——删除排序链表中的重复元素(力扣)
但是有一个关键点,如果链表末尾存在重复元素,则不能通过快指针跳过,否则链表末尾重复的元素无法去掉,这种情况需要单独考虑。:给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次。返回 已排序的链表。对于链表的跳过某些元素,通过一个节点便可以实现,改变节点的指针,并不需要双指针法。由于链表本身是已排序的,所以相等的元素一定相邻,所以考虑使用。输入:head = [1,1,2,3,3]输入:head = [1,1,2]O(n),其中n是链表的长度。输出:[1,2,3]
2024-01-14 17:07:07
455
1
原创 算法刷题——构造限制重复的字符串(力扣)
(堆)priority_queue<pair<char,int>> hp,其中pair<char,int>中char为字符串中出现过的字符,int为字符串出现的次数,一个堆的堆顶为最大的字符,另一个堆的堆顶为次大的字符,从而实现最大的repeatLimitedString的输出,但是思绪太乱,没有理清楚解决问题的先后顺序,因此最后并没有解答出本题。如果在字符串 a 和 b 不同的第一个位置,字符串 a 中的字母在字母表中出现时间比字符串 b 对应的字母晚,则认为字符串 a 比字符串 b 字典序更大。
2024-01-13 22:59:30
1129
1
原创 算法刷题——滑动窗口的最大值(力扣)
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。在 C++ 中,emplace 函数通常用于容器类,例如 std::vector、std::map、std::set 等。主要的优势是,emplace 直接在容器内部进行对象的构造,避免了临时对象的拷贝或移动操作,提高了效率。O((n-k+1)*k) = O(nk),(n-k+1)为滑动窗口移动的次数。输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。输出:[3,3,5,5,6,7]
2024-01-12 20:17:47
1416
原创 算法刷题——统计出现过一次的公共字符串(力扣)
输入:words1 = [“leetcode”,“is”,“amazing”,“as”,“is”], words2 = [“amazing”,“leetcode”,“is”]:给你两个字符串数组 words1 和 words2 ,请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。输入:words1 = [“b”,“bb”,“bbb”], words2 = [“a”,“aa”,“aaa”]输入:words1 = [“a”,“ab”], words2 = [“a”,“a”,“a”,“ab”]
2024-01-12 17:12:08
952
原创 算法刷题——构造有效字符串的最少插入数(力扣)
ab,bc,ac前面的a,b,a都会导致+2的贡献,就是要加bc,ac,bc才能成为有效字符串,而后面的b,c,c都会减少一个贡献,就是bc,ac,bc减少了b,c,c。:给你一个字符串 word ,你可以向其中任何位置插入 “a”、“b” 或 “c” 任意次,返回使 word 有效 需要插入的最少字母数。即aa,ba,bb,ca,cb,cc等会产生+2,而ab,bc,ac等则会导致-1。解释:在 “b” 之前插入 “a” ,在 “b” 之后插入 “c” 可以得到有效字符串 “abc”。
2024-01-11 23:01:20
521
原创 算法刷题——链表的中间结点(力扣)
更加简洁高效地实现了链表中间结点的返回。主要要抓住快指针每次走两步与慢指针每次走一步之间存在的数学关系,这样快指针走到链表尾巴时,慢指针就刚好走到链表中间点。解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。:给你单链表的头结点 head ,请你找出并返回链表的中间结点。输入:head = [1,2,3,4,5,6]如果有两个中间结点,则返回第二个中间结点。输入:head = [1,2,3,4,5]解释:链表只有一个中间结点,值为 3。输出:[3,4,5]输出:[4,5,6]
2024-01-10 19:52:51
396
原创 算法刷题——判断子序列(力扣)
做题时没有想到通过使用双指针来完成两个字符串的匹配,当时是通过暴力法(两个循环)来实现匹配。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。双指针法,O(n+m),其中 n 为 s 的长度,m 为 t 的长度。每次无论是匹配成功还是失败,都有至少一个指针发生右移,两指针能够位移的总距离为 n+m。:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。输入:s = “abc”, t = “ahbgdc”暴力解法,O(nm),n、m分别为s和t的长度。时,可以优先考虑使用。
2024-01-10 17:40:47
615
原创 算法刷题——字符串中的第一个唯一字符(力扣)
给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引。做题时,想着在遍历字符串时,不仅需要使用哈希表将重复的字符标记,还需要将不重复的字符的。O(∣Σ∣),其中 Σ 是字符集,在本题中 s 只包含小写字母,因此 ∣Σ∣≤26。哈希表,O(m),其中m为字符串中不同字符的数量,<=26。记录下来,方便后面通过哈希表得到第一个不重复的字符的索引;输入: s = “loveleetcode”O(n),其中 n 是字符串 s 的长度。输入: s = “leetcode”循环字符串,O(n)。
2024-01-09 20:35:03
1043
原创 算法刷题——数据流的中位数(力扣)
输入 [“MedianFinder”, “addNum”, “addNum”, “findMedian”, “addNum”,“findMedian”] [[], [1], [2], [], [3], []]// 返回 1.5 ((1 + 2) / 2)如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。查询中位数:O(nlogn),由于需要先对容器里的元素进行排序再进行中位数的查询。需要两个额外的容器来完成中位数的查询,O(n)O(n),主要为有序集合的开销。查找中位数:O(1)
2024-01-09 15:54:40
985
原创 【算法刷题——回旋镖数量(力扣)】
给定平面上 n 对 互不相同 的点 points ,其中 points[i] = [xi, yi]。回旋镖 是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的距离和 i 和 k 之间的欧式距离相等(需要考虑元组的顺序)。解释:两个回旋镖为 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[0,0]]输入:points = [[0,0],[1,0],[2,0]]输入:points = [[1,1],[2,2],[3,3]]输入:points = [[1,1]]
2024-01-08 17:18:20
987
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人