牛客网算法周周练15 题号A
题目描述:
给出一个数列 A,求出一个数列B.
其中Bi 表示 数列A中 Ai 右边第一个比 Ai 大的数的下标(从1开始计数),没有找到这一个下标 Bi 就为0,输出数列B
输入描述:
第一行1个数字 n (n ≤ 10000)
第二行n个数字第 i 个数字为 Ai (0 ≤ Ai ≤ 1000000000)
输出描述:
一共一行,第i个数和第i+1个数中间用空格隔开
样例:
输入:
6
3 2 6 1 1 2
输出:
3 3 0 6 6 0
代码如下:
1 #include<iostream> 2 using namespace std; 3 int main(void) 4 { 5 int n; 6 cin>>n; 7 int a[10000]; 8 for(int i=0;i<n;i++) 9 { 10 cin>>a[i]; 11 } 12 for(int i=0;i<n;i++) 13 { 14 for(int j=i+1;j<=n;j++) 15 { 16 if(i==n-1) 17 { 18 cout<<0; 19 return 0; 20 } 21 else 22 { 23 if(a[j]>a[i]) 24 { 25 cout<<j+1<<" "; 26 break; 27 } 28 else if(a[j]<=a[i]&&j==n-1) 29 { 30 cout<<0<<" "; 31 break; 32 } 33 else 34 { 35 continue; 36 } 37 } 38 } 39 } 40 return 0; 41 }
思路:遍历数组a,逐个进行大小比较,注意数组不要越界。当数据比较到最后一个数的时候,因为右边已经没有数了,所以也就不可能有数比其大,所以直接输出0即可(后面不要带空格)。
原文链接: https://www.cnblogs.com/guanrongda-KaguraSakura/p/13303117.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/365842
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!