当前位置:   article > 正文

[题目解析]乐乐的数字_乐乐最近迷上了一款小游戏:将给出的两个正整数连接成一个新的整数,得分就是新生成

乐乐最近迷上了一款小游戏:将给出的两个正整数连接成一个新的整数,得分就是新生成

乐乐的数字(allm)

时间限制: 1000 ms 空间限制: 262144 KB
题目描述

乐乐做完数学作业,突发奇想定义了一种新的数:乐乐数。乐乐把n个数排成一行,一个数的“乐乐数”是指:在这个数的左边且比它小的数中最靠近它(即最靠右)的那个数。依次给出这n个数,请求出所有这n个数相对应的“乐乐数”。

输入

第一行是一个正整数n,表示一共有多少个数。
第二行有n个用空格隔开的正整数,它们从左至右给出了数列中的n个数。这些数保证小于2^31。

输出

输出一行用空格隔开的n个数。
这些数对应于输入数据中的数的“乐乐数”。如果输入中某个数没有“乐乐数”(即它左边的数都不比它小),请输出0。

样例输入
样例1

7
3 1 2 7 6 7 4

样例2

5
5 6 3 10 9

样例输出
样例1

0 0 1 2 2 6 2

样例2

0 5 0 3 3

数据范围限制

对于80%的数据,n≦10000;
对于100%的数据,n≦200000。

思路:

此题我们需要先看看这个数据范围,可以看到这个数据范围非常大,所以不能采用两重循环暴力求解法,否则会超时,那要怎么办呢?这时我们就需要考虑新的算法,我们可以牺牲空间减少时间,只要再加一个数组就可以了。这个数组我们就命名为B数组,这个数组主要是拿来储存前一个比他小的数。接着就是1~N的循环了,我们为了减少时间,这里不能直接两重循环,而是可以利用判断+while来解决。进入第一层循环,假如A[i-1]>A[i]的话,我们就需要更新一下内容了,B[i]需要赋值为A[i-1],而我们的NEXT[i]=i-1。但如果不成立的话变量NXT赋值为NEXT[i-1],然后就是while循环,循环的条件就是NXT不为零并且A[NXT]>=A[i],循环内容就是NXT=NEXT[NXT],这个循环主要的功能就是不停的搜索数字了。

以上为主要的内容解释,接下来上代码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/252551
推荐阅读
相关标签