您的位置:首页 > 编程语言 > C语言/C++

[leetcode]-503. Next Greater Element II(C语言)

2018-03-14 22:04 435 查看
Given a circular array (the next element of the last element is the first element of the array), print the Next Greater Number for every element. The Next Greater Number of a number x is the first greater number to its traversing-order next in the array, which means you could search circularly to find its next greater number. If it doesn't exist, output -1 for this number.

Example 1:
Input: [1,2,1]
Output: [2,-1,2]
Explanation: The first 1's next greater number is 2;
The number 2 can't find next greater number;
The second 1's next greater number needs to search circularly, which is also 2.
Note:The length of given array won't exceed 10000./**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* nextGreaterElements(int* nums, int numsSize, int* returnSize) {
*returnSize=numsSize;
int *res;
res=(int *)calloc(*returnSize,sizeof(int *));
int i,j;
for(j=0;j<numsSize;j++)
{
for(i=(j+1)%numsSize;j!=i;i=(i+1)%numsSize)
{
if(nums[i]>nums[j])
{
res[j]=nums[i];
break;
}
}
if(i==j)
res[j]=-1;
}
return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: