刷题/算法
文章平均质量分 53
,
anqiqi疯狂暴走兔
没事就爱不开心
展开
-
算法训练——图(生成树、并查集、环、路径)
1原创 2022-11-01 22:45:16 · 196 阅读 · 1 评论 -
算法训练——设计类专题
1原创 2022-10-23 11:25:53 · 367 阅读 · 0 评论 -
算法训练——树专题
1原创 2022-10-23 11:25:04 · 214 阅读 · 0 评论 -
算法训练——动态规划专题
1原创 2022-10-21 23:17:15 · 118 阅读 · 0 评论 -
算法训练——二分专题
1原创 2022-10-21 23:16:07 · 261 阅读 · 0 评论 -
算法训练——差分专题
1原创 2022-10-21 23:14:44 · 136 阅读 · 0 评论 -
算法训练——DFS专题
1原创 2022-10-21 23:13:39 · 142 阅读 · 0 评论 -
算法训练——并查集专题
1原创 2022-10-21 23:12:33 · 120 阅读 · 0 评论 -
算法训练——双指针专题
1原创 2022-10-21 23:10:35 · 323 阅读 · 0 评论 -
算法训练——滑动窗口专题
1原创 2022-10-21 23:09:22 · 328 阅读 · 0 评论 -
算法训练——单调栈专题
1原创 2022-10-21 23:08:12 · 245 阅读 · 0 评论 -
算法训练——排序专题
1原创 2022-10-21 23:06:54 · 279 阅读 · 0 评论 -
算法学习笔记
首先,要使用什么算法思想其次,要使用什么数据结构,队列,栈,set,哈希排序:重载比较函数之前都低估sort了,很多时候都重写来了cmp函数,但是现在发现对于排序值是pair或者vector的元素,sort不用重写cmp也是可以比较出来的,比较规则就是依次比较,先比较pair的first,如果相等就比较second,先比较vector[0]大小,如果相等就继续比较vector[1],再相等就继续…原创 2022-10-18 22:10:15 · 309 阅读 · 0 评论 -
求全排列、组合、以及去重的模板
文章目录一、给定一组不重复的数,求排列和组合排列模板1:排列模板2:组合模板1:组合模板2:二、给定含重复的数列,求不重复的排列和组合排列模板组合模板一、给定一组不重复的数,求排列和组合排列模板1:class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> res; p原创 2021-11-04 16:54:13 · 166 阅读 · 0 评论 -
力扣LeetCode(二)T41-T80
文章目录41.缺失的第一个正数41.缺失的第一个正数给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。这个题的难点就是空间还要常数级,所以我们可以就地哈希,把正数x调整到nums[x-1]这个地方。但是如果while条件中是nums[i]!=i+1,会出现死循环,比如[1,1],对于nums[1]=1!=2,那么就互换nums[1],nums[0],但是数组还是[1,1],这不就死循环了。所以要换一种原创 2021-10-05 15:24:59 · 351 阅读 · 0 评论 -
力扣LeetCode(一)T01-T40
1.两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。用字典序mapclass Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector&原创 2021-09-01 14:04:43 · 895 阅读 · 0 评论 -
Top K
小根堆排序调整一次的复杂度是O(logn)O(logn)O(logn),这里是O(logk)O(logk)O(logk),总复杂度是nO(log10)nO(log10)nO(log10)Top K问题,复杂度是nlog(k)nlog(k)nlog(k)快排快排变形,O(n)快速排序会递归排序左右两侧的数组,而这里只需要递归地选择一侧的数组。这相当于一个“不完全”的快速排序,因为我们只需要只知道最小的k个数是哪些,并不需要知道它们的顺序。...原创 2021-08-30 15:49:01 · 73 阅读 · 0 评论 -
快慢指针求解链表中环的入口节点推导
当慢指针抵达环的入口节点B时,此时快指针应该在节点B处,此后快指针移动2Y的距离,慢指针移动Y的距离后在节点C相遇,也就是说BD=BC=Y;从开始移动到快慢指针相遇,慢指针移动的总距离为:S慢S_慢S慢=AB+BC=X+Y;快指针移动的距离为:S快S_快S快=AB+BC+CD+DB+BC=2*S慢S_慢S慢=2X+2Y;那么S快S_快S快-S慢S_慢S慢=CD+DB+BC=X+Y,也即CD+DB=X=AB综上所述,当快慢指针在C点相遇后,相遇点到环入口节点的距离和链表头节点到环入口节点的.原创 2021-08-27 19:52:55 · 113 阅读 · 0 评论 -
牛客剑指offer笔记(下)
文章目录35.在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%100000000736.输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的37.统计一个数字在升序数组中出现的次数。38.输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的原创 2021-08-14 11:57:09 · 268 阅读 · 0 评论 -
递归和非递归求解字符组合
递归#include<bits/stdc++.h>using namespace std;void combination(string&,int,int,string&);void solve(string& str,string& res){ if(str.empty()) return; for(int i=1;i<=str.size();i++) { combination(str,0,i,res);//选i个 }原创 2021-08-12 22:09:04 · 77 阅读 · 0 评论 -
牛客剑指offer笔记(上)
https://www.nowcoder.com/ta/coding-interviews1.在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。这个思想还是要好好把握一下的!!!不要使劲暴力。class Solution {public: bool Find(int target, vector<vector<int> > a原创 2021-03-08 22:03:15 · 640 阅读 · 0 评论 -
散列——哈希链表以及线性开型寻址
1.哈希链表#include<iostream>using namespace std;bool iffind=false;//全局变量 template<class T>struct hashnode{ T element; hashnode<T> *next; //构造链表节点方法 hashnode(T& theelement,hashnode<T> *next) { this->element=theelemen原创 2021-03-17 23:17:55 · 257 阅读 · 0 评论 -
菜鸟网络机试
//bfs#include<list>#include<queue>#include<iostream>using namespace std;vector<vector<int> > graph;queue<int> q;int vis[1005]={0};int path[1005]={-1};int bfs(int x,int y){ q.push(x); path[x]=-1; vis[x]=1; b原创 2021-03-13 22:03:34 · 70 阅读 · 0 评论 -
动态规划1:字符串编辑距离
问题解析解决此问题最好的方法是采用动态规划的方法。如下:设str1=“abcd”,str2=“gbcdz”,定义一个二维数组d[][],d[i][j]表示str1中取前i个字符和str2中取前j个字符的最短距离,例如d[3][2]表示“abc”到“gb”的最短距离。d[i][j]的计算规则有三条:来自d[i - i][j - 1],即 “str1的前i-1个字符组成的子串” 到 “str2的前j-1个字符组成的子串” 的最小距离,此时如果str1[i] = str2[j],则最短距离不变,否则最..原创 2021-03-06 21:21:04 · 180 阅读 · 0 评论 -
栈计算器——有的平台很严格,所以一定要好好判断数组越界问题,即使你肯定它不会越界。
栈计算器,题目内容就不赘述了,这里主要是讲讲我遇到的挫折折磨劫难摧残!说到底还是我的编程习惯太差劲。比较下面两段代码:第二段代码是我一开始写的,一直报段错误,,,在一开始写的时候,我考虑到如果符号栈内不空,那么数字栈内也一定不空,且至少有两个数字,所以while中不用判断数字栈是否为空。但是在有的平台上这个就会被视作bug,所以为了以后的笔试顺利,一定一定要有好的编程习惯,多多注意边界问题,即使你肯定它绝对不会超过边界,也要判断边界问题!!!//第一段:while(!sym.empty()&原创 2021-03-06 15:21:28 · 73 阅读 · 0 评论 -
用malloc函数为链表申请空间,最后释放内存为什么会出现bug??? 删掉释放内存的代码就pass了 为什么?
题目描述输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};正常返回倒数第k个结点指针,异常返回空指针本题有多组样例输入。输入描述:1 输入链表结点个数2 输入链表的值3 输入k的值输出描述:输出一个整数示例1输入81 2 3 4 5 6 7 84输出5题目分析题目简单,但是涉及这种链表真要自己去写,自己原创 2021-03-05 21:31:53 · 242 阅读 · 0 评论 -
求质因数——目前还是超时??long型整数怎么破???
题目描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )最后一个数后面也要有空格输入描述:输入一个long型整数输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。示例1输入180输出2 2 3 3 5代码#include<cstdio>#include<iostream>using namespace std;int main(){ l原创 2021-03-05 17:12:22 · 288 阅读 · 0 评论 -
字符串“漂亮度”——审清题意即可
题目描述给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。本题含有多组数据。输入描述:整数N,后续N个名字输出描述:每个名称可能的最大漂亮程度示例1输入2zhangsanlisi输出192101题目分析这道题目很简单,但是在理解题意层次上一定要仔细,这道题才做的时候我竟然没读懂原创 2021-03-05 16:43:29 · 397 阅读 · 0 评论 -
广度优先搜索——不谈算法就谈细节(和大二的时候犯同样的错误,,,,,,)
定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。入口点为[0,0],既第一空格是可以走的路。本题含有多组数据。输入描述原创 2021-03-04 22:12:47 · 75 阅读 · 1 评论 -
小球落地反弹五次的路程和距离——字符串处理
题目描述假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?最后的误差判断是小数点6位输入描述:输入起始高度,int型输出描述:分别输出第5次落地时,共经过多少米第5次反弹多高示例1输入1输出2.8750.03125题目分析看起来很简单,实际也很简单,但是!!看到测试用例的输出,我惊了!这里处理是保留的有效数字,我这里用的是个本办法,就是转化为字符串处理了。#tinclude<cstdio>#i原创 2021-03-04 20:22:12 · 179 阅读 · 1 评论 -
如何求解最大回文子串?
https://www.cnblogs.com/labuladong/p/12320516.html题目描述Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式原创 2021-03-04 17:31:57 · 54 阅读 · 1 评论 -
“字典序排序”,“第k大”
题目描述定义一个单词的“兄弟单词”为:交换该单词字母顺序,而不添加、删除、修改原有的字母就能生成的单词。兄弟单词要求和原来的单词不同。例如:ab和ba是兄弟单词。ab和ab则不是兄弟单词。现在给定你n个单词,另外再给你一个单词str,让你寻找str的兄弟单词里,字典序第k大的那个单词是什么?注意:字典中可能有重复单词。本题含有多组输入数据。输入描述:先输入单词的个数n,再输入n个单词。再输入一个单词,为待查找的单词x最后输入数字k输出描述:输出查找到x的兄弟单词的个数m然后输出查找到的原创 2021-03-03 23:30:49 · 396 阅读 · 1 评论 -
map,vector,queue,实现简单错误记录
#include<vector>#include<cstdio>#include<map>#include<iostream>#include<queue>using namespace std;vector<pair<string,int> > v;map<pair<string,int>,bool > mp;map<pair<string,int>,int >原创 2021-03-03 20:54:40 · 60 阅读 · 1 评论 -
刷题笔记
2/28:1.风险曝光度(riskexposure)=错误出现率(风险出现率)X错误造成损失(风险损失)比方说有一套产品100个,一套产品10元,有60%可以使用,剩下的风险率50%,求风险曝光度。2. 软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。3. 验收测试:系统开发生命周期方法论的一个阶段,这时相关原创 2021-03-03 00:07:32 · 197 阅读 · 0 评论