目录
题目
找出数组中每个数右边第一个比它大的元素,输出下标索引,没有则标 -1。
暴力法:嵌套循环比较。
#include <stdio.h>
#include <stdlib.h>
// 查找数组中每个数右边第一个比它大的元素的下标索引
int *findNextGreaterElements(int *nums, int size) {
int *result = (int *)malloc(size * sizeof(int));
for (int i = 0; i < size; i++) {
result[i] = -1; // 初始化结果为-1
// 只比较当前数的右边
for (int j = i + 1; j < size; j++) {
if (nums[j] > nums[i]) {
result[i] = j; // 找到右边第一个比当前元素大的元素,记录其下标索引
break;
}
}
}
return result;
}
int main() {
int nums[] = {
3, 6, 8, 2, 5};
int size = sizeof(nums) / sizeof(int);
int *result = findNextGreaterElements(nums, size);
printf("每个数右边第一个比它大的元素的下标索引:\n");
for (int i = 0; i < size; i++) {
printf("%d: %d\n", nums[i], result[i]);
}
free(result);
return 0;
}