算法学习基础笔记

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

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

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

在这里插入图片描述
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));

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

单链表
在这里插入图片描述数据结构组成部分

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

在这里插入图片描述栈和队列

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

在这里插入图片描述

在这里插入图片描述

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

单调栈Acwing
在这里插入图片描述就是给你一组数然后你要输出数组中每个元素的第一个比该元素大的数的下标,如果没有就输出0

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

#include<iostream>
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;
}

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

在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值