自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸡向前走

再也不放弃(ノへ ̄、)

  • 博客(48)
  • 收藏
  • 关注

原创 代码随想录算法训练营第9天|栈与队列2

【代码】代码随想录算法训练营第9天|栈与队列2。

2023-02-11 22:44:35 101

原创 代码随想录算法训练营第9天|栈与队列1

【代码】代码随想录算法训练营第9天|栈与队列1。

2023-02-10 23:55:13 100

原创 代码随想录算法训练营第8天|字符串

自己写的,用了substr,额外申请了空间。原地处理字符串方法:局部翻转,整体翻转。

2023-02-09 00:04:12 126

原创 刷题常用函数

【代码】刷题常用函数。

2023-02-08 23:40:04 57

原创 代码随想录算法训练营第7天

【代码】代码随想录算法训练营第7天。

2023-02-07 23:11:50 56

原创 代码随想录算法训练营第6天

拉链法:发生冲突的元素存储到链表里。关键:哈希表的大小,太大?太小,易发生冲突,链表上的元素多,查找时间长。线性探测法:冲突位置的下一个放元素。

2023-02-06 23:50:23 234

原创 代码随想录算法训练营第4天

当前结点指向2,2指向1,1指向3。

2023-02-05 01:28:19 338

原创 代码随想录算法训练营第3天

建立一个虚拟头结点,指向头结点,两种操作就可以和在一起了。分为头结点和不是头结点两种操作。val,指针,构造函数。

2023-02-04 00:40:10 49

原创 代码随想录算法训练营第2天

设置好几个需要用到的变量:循环次数,每次循环一条边的边上数的个数,每次循环的起始位置,考虑n的奇偶性。本题,从左往右,从上至下,从右往左,从下到上,顺序是不变的。模拟,用到了二分法的循环不变量思想(什么在变,什么不变)

2023-02-03 01:10:10 179

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。

【代码】代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。

2023-02-01 23:43:14 75

原创 leetcode 报错

Line 7: Char 9: runtime error: index 30 out of bounds for type 'int [30]' (solution.cpp) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:16:9数组越界,把int[30]改成int[31]C++ requires a type specifier for all declarations dp[0]=0;没彻底..

2022-01-05 19:44:41 5514

原创 【找工作】刷题记录

2021/12/29剑指 Offer 09. 用两个栈实现队列

2021-12-29 21:48:10 209

原创 关于n+1,n++,++n

我是在做dfs的题遇到了这个问题,正确应该是dfs(n+1),然后我写成了dfs(n++),所以就错了。从上面也能看出来,n+1的值直接就改变了,但是n++的值却要在下次用的时候才会体现出来值得变化。

2020-09-28 17:40:37 467

原创 母牛的故事 规律分析和时间超时的解决

#include<bits/stdc++.h>using namespace std;int n;int F[60];int f(int n){ if(n<4) return n; else F[n]=f(n-1)+f(n-3);//?F[n]=f(n-1)+f(n-3) not F[n-1]+F[n-3] 没有递推的意思 return F[n];}int main(){ while(scanf("%d",&n)&&n)

2020-09-24 18:19:37 252

原创 【蓝桥杯】出栈次序(递归、公式两种解法)

【蓝桥杯】出栈次序(递归、公式两种解法)。很好理解的递归。

2020-09-12 21:07:32 409

原创 用筛法求之N内的素数(求n内的质数以及判断n是否为质数)

#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; for(int i=2;i<n+1;i++){ int flag=1; for(int j=2;j<i;j++) if(i%j==0)flag=0; if(flag)cout<<i<<endl; }

2020-09-10 08:50:01 312

原创 目标检测详细综述及常见分类

目标检测综述目标检测分类分为2类分为3类传统的目标检测算法候选区域/框 + 深度学习分类基于深度学习的回归方法分为4类目标检测object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。所以,object detection要解决的问题就是物体在哪里以及是什么的整个流程问题。分类分为2类深度方法主要分为one-stage(e.g. SSD, YOLO)和two-stage(e.g. RCNN系列)两种. 相对来说one-stage速度快, 精度低. 而two-st

2020-09-01 11:13:48 4294

原创 【LeetCode】96. 不同的二叉搜索树 DP

不同的二叉搜索树题目描述解题思路代码题目描述题目链接:96. 不同的二叉搜索树解题思路动态规划。看的官方题解。如果是直接想动态转移方程的话不太容易,但是像题解里面推出式子来就比较好理解了。定义两个函数:G(n): 长度为 n 的序列能构成的不同二叉搜索树的个数。F(i, n): 以 i 为根、序列长度为 n 的不同二叉搜索树个数(1≤i≤n)。代码class Solution {public: int numTrees(int n) { vector&

2020-08-24 18:20:30 80

原创 【LeetCode】338. 比特位计数(DP)

比特位计数一级目录二级目录代码一级目录二级目录代码class Solution {public: vector<int> countBits(int num) { vector<int> dp(num+1); dp[0]=0; for(int i=0;i<=num;i++) if(i%2!=0) dp[i]=dp[i-1]+1; else dp[i]=dp[i/2]

2020-08-20 23:10:36 96

原创 【LeetCode】300. 最长上升子序列(DP)

最长上升子序列题目描述解题思路代码题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。(注意:子序列可以不连续,子串要连续)例如:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。解题思路动态规划。动态规划主要就是要找准状态和状态转移。本题的状态显然可以是上升子序列的最大长度。状态转移就是:首先定位到我所要求的dp[i]位置上,在i之前比较(即j<i) 如果nums[i]>nums[

2020-08-20 22:36:27 107

原创 211. 添加与搜索单词 - 数据结构设计(leetcode)

添加与搜索单词题目描述解题思路代码题目描述题目链接:211. 添加与搜索单词 - 数据结构设计(leetcode)设计一个支持以下两种操作的数据结构:void addWord(word)bool search(word)search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z 。 . 可以表示任何一个字母。解题思路主要是利用字典树。字典树的基本学习可以做这道题:208. 实现 Trie (前缀树)。理解了基本字典树的思想后再做这道题其实就是关于通配符的处

2020-08-13 19:51:34 133

原创 235. 二叉搜索树的最近公共祖先(leetcode)

二叉搜索树的最近公共祖先题目描述解题思路代码题目描述题目链接:二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例:1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6 解释: 节点 2 和节点 8 的最近公共

2020-08-08 16:40:01 106

原创 116、117填充每个节点的下一个右侧节点指针I、II(leetcode)

填充每个节点的下一个右侧节点指针题目描述解题思路完美二叉树二叉树代码完美二叉树二叉树题目描述题目链接:116 117116和117题目类似,都是要填充每个结点的 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。(初始状态下,所有 next 指针都被设置为 NULL。)例:所不同的是116为完美二叉树,而117为普通二叉树。解题思路刚看题目描述,肯定是不太清楚是什么意思。其实就是二叉树的每个结点定义时就有一个next指针,我

2020-08-05 12:49:58 122

原创 时间复杂度和空间复杂度

时间复杂度和空间复杂度时间复杂度概念分析方法题(之后补充)空间复杂度时间复杂度概念频度:是指该语句在算法中被重复执行的次数。T(n):是指算法中所有语句的频度之和,它是该算法问题规模n的函数。时间复杂度:就是分析T(n)的数量级。分析方法两条规则:通过设执行次数->经过执行之后的值->由限制条件求解。题(之后补充)空间复杂度...

2020-08-04 18:35:28 70

原创 二叉树遍历(非递归解法)一个模板解决三种遍历

二叉树遍历(非递归解法)用同一个模板解决三种递归。附理解和代码

2020-08-02 19:22:12 202

原创 二叉树遍历(递归解法)

二叉树遍历(递归解法)思想加代码

2020-08-02 13:53:33 189 1

原创 387. 字符串中的第一个唯一字符(leetcode)

字符串中的第一个唯一字符题目描述解题思路代码题目描述给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。s = “leetcode”返回 0s = “loveleetcode”返回 2解题思路只需判断字符串的最前面的位置和最后面的位置是否相等即可,是,则返回位置,不是,则继续遍历,遍历结束仍没有找到则返回-1。运用find和rfind函数,分别从前往后和从后往前查找。代码class Solution {public: int firstU

2020-07-30 11:35:24 85

原创 【Git】2常用命令理解

git常用命令工作流程常用指令工作流程git的工作流程一般是这样的:1、在工作目录中添加、修改文件;2、将需要进行版本管理的文件放入暂存区域;3、将暂存区域的文件提交到git仓库。因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)常用指令remote:远程仓库repository:版本库(仓库)index:暂存区workspace:工作区在了解了区域关系(区域理解)之后,就可以来理解指令。常用指令:Git init

2020-07-29 18:12:37 84

原创 【Git】1工作区、暂存区、版本库、远程仓库理解

Git的区域理解版本库工作区暂存区远程仓库HeadObjectsMaster版本库仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本位置: .git 就是版本库。工作区存放工程的地方。位置:一个文件夹通过git init 设置成一个git可以管理的文件夹时,这个文件夹里的内容(除去.git文件夹)就是工作区。例:暂存区暂存区,叫stage 或者 index ,是用来暂时存放工作区中修改的内容,可以理解为一个中转站。位置:在.

2020-07-29 17:13:35 309

原创 206. 反转链表(leetcode)

反转链表题目描述解题思路代码题目描述题目链接:反转链表主要题目就是反转链表:例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路用的是迭代法。这个的一个特点就是往链表头部添加元素,天然具有倒序的特点。所以按照输入顺序直接添加元素,那么输出就是倒序。代码思路就是:先保存next结点。如果先执行的话,就会丢失next结点修改next,指向新链表修改pre为已添加的结点

2020-07-27 19:27:00 78

原创 198. 打家劫舍(leetcode)

打家劫舍题目描述解题思路代码题目描述题目链接:198. 打家劫舍(leetcode)主要就是求数组和的最大值,要求每个数组的值不能相邻。示例 :输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。解题思路动态规划。分析这个问题可由两部分组成,偷前k-1间房子,最后一间不偷;偷前k-2间房子和最后一间。因此,状态转移方程为:还要注意:在写递推关系的时候,要注意写上 k=0和

2020-07-22 17:00:12 67

原创 滑雪(信息学奥赛一本通—1280:【例9.24】)

滑雪题目描述用到的知识代码题目描述题目链接:1280:【例9.24】滑雪小明喜欢滑雪,因为滑雪的确很刺激,可是为了获得速度,滑的区域必须向下倾斜,当小明滑到坡底,不得不再次走上坡或等着直升机来载他,小明想知道在一个区域中最长的滑坡。滑坡的长度由滑过点的个数来计算,区域由一个二维数组给出,数组的每个数字代表点的高度。下面是一个例子:其实本题就是求这个数字矩阵一个走向的最大长度,走的要求是每次可以上下左右任意方向,但是下一个数必须比当前的数要小,最后输出这个长度。【输入样例】5 51 2 3 4

2020-07-20 16:50:03 707

原创 119. 杨辉三角 II(leetcode)

杨辉三角 II题目描述解题思路代码题目描述题目链接: 杨辉三角 II给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。示例:输入: 3输出: [1,3,3,1]解题思路运用了动态规划思想。总的来说就是利用杨辉三角形后一行与前一行的关系。更新过程为:从倒数第二个元素开始往前更新。它等于原来这个位置的数 + 前一个位置的数行[i] = 行[i] + 行[i-1]代码class Solution {public: vector<int> getR

2020-07-15 16:52:03 58

原创 102. 二叉树的层序遍历 107.二叉树的层次遍历 II(leetcode)

102.给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]107.给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15

2020-07-12 18:15:01 129

原创 数列操作(信息学奥赛一本通—1535)利用树状数组

数列操作题目描述代码题目描述题目链接:1535:数列操作给定n个数列,规定有两种操作,一是修改某个元素,二是求子数列[a,b]的连续和。数列元素个数最多10万个,询问操作最多10万次。刚开始看这道题觉得挺好写的,一顿操作猛如虎,循环套循环之后果然超时了…看了网上的解法主要用了树状数组,学习了之后直接套用就可以解决了。树状数组入门(超详细)。建议先搞清楚思想之后再来搞代码。代码#include<bits/stdc++.h>using namespace std;#define m

2020-07-10 18:28:06 426

原创 树状数组入门(超详细)每步举例说明浅显易懂,没看懂的话欢迎交流!!

树状数组入门树状数组简介举例理解树状数组常用操作更新数组元素求前缀和三级目录树状数组简介树状数组(Binary Indexed Tree, Fenwick Tree),是一种用于高效处理对一个存储数字的列表进行更新及求前缀和、区间和的数据结构。什么是前缀和以及区间和?前缀和是一个数组的某项下标之前(包括此项元素)的所有数组元素的和。 区间和就是给定区间的数组的和。它的查询和修改的时间复杂度都是log(n),空间复杂度则为O(n)。这正是使用树状数组的原因。(碰到更新元素、求前缀和、区间和就可以考

2020-07-10 18:16:32 716 1

原创 53. 最大子序和(leetcode) 动态规划、贪心解法、分治解法

最大子序和题目描述解法动态规划贪心分治题目描述题目链接:53. 最大子序和(leetcode) 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解法这道题解法较多。暴力法就是将所有可能的连续数组的和都求出来,然后取最大值,研究意义不大,所以就不详细写暴力了。主要研究了一下动态规划、贪心、分治。动态规划

2020-07-08 14:55:57 158

原创 图书管理(信息学奥赛一本通—1456)利用set容器解答

例题

2020-07-05 12:02:17 521

原创 愤怒的牛(信息学奥赛一本通-T1433)详细解答

题目描述农夫 John 建造了一座很长的畜栏,它包括N(2≤N≤100,000)N(2≤N≤100,000)个隔间,这些小隔间依次编号为x1,…,xN(0≤xi≤1,000,000,000)x1,…,xN(0≤xi≤1,000,000,000). 但是,John的C(2≤C≤N)C(2≤C≤N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发生争斗。为了不让牛互相伤害。John决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是什么呢?输入第一行:空格分隔

2020-07-02 20:15:19 1016

原创 codeblocks:error: in C++98 ‘xxx’ must be initialized by constructor, not by ‘{...}’

1.问题:在codeblocks 运行vetor时报错:error: in C++98 ‘num’ must be initialized by constructor, not by ‘{…}’

2020-07-01 23:13:20 8463

空空如也

空空如也

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

TA关注的人

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