lintcode 下一个更大的数2

描述

给定一个环形数组(最后一个元素的下一个元素是数组的第一个元素),为每个元素打印下一个更大的元素。 数字x的下一个更大的数是数组中下一个遍历顺序中出现的第一个更大的数字,这意味着您可以循环搜索以查找其下一个更大的数字。 如果它不存在,则为此数字输出-1。

样例

1

输入: [1,2,1]
输出: [2,-1,2]
解释:第一个1的下一个更大的数字是2;
数字2找不到下一个更大的数字;
第二个1的下一个更大的数字需要循环搜索,答案也是2。

2

输入: [1]
输出: [-1]
解释:
数字1找不到下一个更大的数字

思路

进行长度为给定数组大小的循环,对于每一位的数,进行循环遍历,找下一个更大的数,注意循环的三个条件

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
/**
* @param nums: an array
* @return: the Next Greater Number for every element
*/
vector<int> nextGreaterElements(vector<int> &nums) {
// Write your code here
vector<int> res;
int n = nums.size();
for (int i = 0; i < n; i++) {
int temp = -1;
for (int j = (i+1)%n; j != i; j = (j+1)%n) {
if (nums[j] > nums[i]) {
temp = nums[j];
break;
}
}
res.push_back(temp);
}
return res;
}
};
-------------end of file thanks for reading-------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值