题目理解
- nums2中的元素要比nums1中的大
- nums2中的元素应从与nums1中相同的元素开始遍历
解题思路
- 利用循环进行数组的遍历和比较
提示
- 设定一个整型flag判定是否有下一个更大元素
部分代码
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* nextGreaterElement(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){
int k;
int *res = (int*)malloc(sizeof(int)*nums1Size);
for(int i=0; i<nums1Size; i++)
{
for(int j=0; j<nums2Size; j++)
{
if(nums1[i] == nums2[j]) //两数组的元素相等
{
int flag = 0;
for(k=j; k<nums2Size; k++)
{
if(nums1[i]<nums2[k])
{
flag = k;
break;
}
}
if(flag) res[i] = nums2[flag];
else res[i] = -1;
}
}
}
*returnSize = nums1Size;
return res;
}