栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

6.28-学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

6.28-学习

## 今日份学习

目录

## 今日份学习

  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的字符数据类型

数据类型:决定了内存中存储数据的类型及所需内存的大小。

(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 a_i} {j}f(i)=miniai​​{j}。若不存在,则 f(i)=0f(i)=0。

试求出 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,不然时间会超限,我被这个地方堵得怀疑人生

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999317.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号