算法学习基础笔记

一开始准备蓝桥杯,真的只是上去就做题
难死拉倒
而且一道题看半天也想不出来然后看别人写的答案也看不懂
我就开始上网搜各种经验贴
最主要的小白一定要看算法基础上视频
我这个小白就看了视频之后感觉不算一前那种特别难受了
跟着视频
算法笔记

不要乱做题目,新手没有经验是做不出来的,我就犯了这个大忌
记住对于任何学习来说

心流能达到的状态是根据自己的能力稍微难一点点

算法学习基础笔记_第1张图片
C++的输入与输出cin和cout遇到很多数据的时候比较慢
C语言的输入和输出更快
注意这几个输入都会遇到空格停止

C++的string函数
char s[100];

string s  //动态数组

能做一个加法
s+=‘ab’;
在末尾加上ab

ss.size()//返回字符的个数
s.substr(1,1)//第一个参数是数组的下标
//第二个是长度
//例如
string s=sab;
s.substr(1,2);
//结果为ab
//如果只写一个参数,那就会从这个位置输出到末尾

gets函数可以读空格
但是gets函数有的不让用

getline(cin,s);
//也可以输入空格

pair<type1,type2>q
q={1,2};
q.first
q.second


sort的用法

头文件 memset
在函数之外开辟的所有类型都会初始化为0
memset(a,1,sizeof(a))
参数:数组名,要赋的值 ,sizeof(数组名)
这个函数还可以用来最大值初始化
memset(a,0x3f,sizeof(a));

递归 斐波那契函数
见文章 快速提升代码解题能力

单链表
算法学习基础笔记_第2张图片数据结构组成部分

头指针,截至标志 next指针
插入和删除

算法学习基础笔记_第3张图片栈和队列

在算法竞赛中用数组来表示

算法学习基础笔记_第4张图片

在这里插入图片描述

学过数据结构的都很容易看懂

单调栈Acwing
算法学习基础笔记_第5张图片就是给你一组数然后你要输出数组中每个元素的第一个比该元素大的数的下标,如果没有就输出0

最简单的暴力
但是以前的时候这个对我来说还是有难度的
现在也是
反正一写算法就心塞

#include
using namespace std;
int a[100]; 
int b[100];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i]; 
for(int i=1;i<=n;i++){
	for(int j=i+1;j<=n;j++){
		if(a[j]>a[i]){
		b[i]=j;break;
		}
	}
}
for(int i=1;i<=n;i++)
cout<<b[i]<<" ";
	return 0;
}

在这里插入图片描述
让我们用栈实现一下
减少一下时间复杂度

在这里插入代码片

你可能感兴趣的:(算法学习基础笔记)