## 今日份学习
目录
## 今日份学习
1.完成了JDK和IDE的安装及配置环境 并掌握了其基本操作方法
2.学习了Java的基本数据类型 ,和一些操作的知识
3.写了一道单调栈的题目
1.JDK的安装教程
(109条消息) 2020年最新 java JDK 11 下载、安装与环境变量配置教程_天天上网_c的博客-CSDN博客_jdk11https://blog.csdn.net/qq_41873673/article/details/108027074注意一下,在系统中进行环境变量的设置时,记得检查一下是否已配置好。
2. IDE的安装和配置环境。
安装不难,难的是如何使用,大家可以看这套视频
尚硅谷IDEA教程(idea经典之作,idea安装,idea使用)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/av30080993?p=2&spm_id_from=pageDriver&vd_source=530d8e193c65ac91c63ab7e5899576c4
3.Java的八种基本数据类型
Java的八种基本数据类型与C语言相差不是很大.
JAVA与C语言之间数据类型上的比较_wzx15927662183的博客-CSDN博客_比较c语言和java的字符数据类型
Java的八种基本数据类型与C语言相差不是很大.
JAVA与C语言之间数据类型上的比较_wzx15927662183的博客-CSDN博客_比较c语言和java的字符数据类型
数据类型:决定了内存中存储数据的类型及所需内存的大小。
(109条消息) java八种基本数据类型及包装类详解_One Tester的博客-CSDN博客_java八大基本数据类型https://blog.csdn.net/qq_37688023/article/details/85106894
4.栈的单调性
首先,栈的单调性是指栈中的元素按单调递增或递减的方式进行排列。
应用:求每个数后第一个大于他的数
题目:
给出项数为 nn 的整数数列 a_{1 dots n}a1…n。
定义函数 f(i)f(i) 代表数列中第 ii 个元素之后第一个大于 a_iai 的元素的下标,即 f(i)=min_{i
试求出 f(1dots n)f(1…n)。
输入格式
第一行一个正整数 nn。
第二行 nn 个正整数 a_{1dots n}a1…n。
输出格式
一行 nn 个整数 f(1dots n)f(1…n) 的值。
输入输出样例
输入 #1复制
5 1 4 2 3 5
输出 #1复制
2 5 4 5 0
说明/提示
【数据规模与约定】
对于 30%30% 的数据,nleq 100n≤100;
对于 60%60% 的数据,nleq 5 times 10^3n≤5×103 ;
对于 100%100% 的数据,1 le nleq 3times 10^61≤n≤3×106,1leq a_ileq 10^91≤ai≤109。
为方便理解,首先先来模拟一下
这里模拟的是栈中单调递减的情况
假定给定的数据为
5
1 4 2 3 5
第一趟:将5压入栈中
第二趟:将3与5比较,3小,入栈
第三趟:2与3比较,2小,入栈
第四趟:2与4比较,4大,2,3相继出栈
第五趟:1和5比较,1小,入栈
代码如下:
#include"iostream"
#include"stack"
#define MAX 3000005
using namespace std;
//单调栈的定义是使栈中的元素单调递增或递减
//思路:将数倒置来看,如果比栈顶元素大,则弹出栈顶元素
//并将此时的栈顶元素放入数组中
int a[MAX];
int b[MAX];
int n;
stack< int >s;
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
scanf("%d", &a[i]); //一定要用这个输入,不然会时间超限
}
for (int i = n; i >= 1; i--)
{
while (!s.empty() && a[s.top()] <= a[i])
s.pop(); //弹出比数组元素小的
b[i] = s.empty() ? 0 : s.top();
s.push(i); //压入栈
}
for (int i= 1; i <= n; i++)
{
cout << b[i] << " ";
}
return 0;
}
Attention!!!
输入一定要用scanf,不然时间会超限,我被这个地方堵得怀疑人生



