0
点赞
收藏
分享

微信扫一扫

排序——找出数组排序后的目标下标

落拓尘嚣 2022-02-05 阅读 61

一、题目描述

给你一个下标从 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;
}
举报

相关推荐

0 条评论