一、题目描述
给你一个下标从 0 开始的整数数组 nums 以及一个目标元素 target 。
目标下标 是一个满足 nums[i] == target 的下标 i 。
将 nums 按 非递减 顺序排序后,返回由 nums 中目标下标组成的列表。如果不存在目标下标,返回一个 空 列表。返回的列表必须按 递增 顺序排列。
二、C语言代码
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* targetIndices(int* nums, int numsSize, int target, int* returnSize){
// 排序
for(int i = 0; i < numsSize - 1; i++){
int flag = i;
for(int j = i + 1; j < numsSize; j++){
if(nums[j] < nums[flag])
flag = j;
}
if(flag > i){
int temp = nums[i];
nums[i] = nums[flag];
nums[flag] = temp;
}
}
// 寻找目标下标
int start, i;
*returnSize = 0;
for(i = 0; i < numsSize; i++){
if(nums[i] == target){
start = i;
(*returnSize)++;
break;
}
}
for(++i; i < numsSize; i++){
if(nums[i] == target){
(*returnSize)++;
}
}
// 返回结果
int *ret = (int*)malloc(sizeof(int) * (*returnSize));
for(int i = 0; i < *returnSize; i++){
ret[i] = start + i;
}
return ret;
}