欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > Leetcode3264:K 次乘运算后的最终数组 I

Leetcode3264:K 次乘运算后的最终数组 I

2025/10/19 4:55:37 来源:https://blog.csdn.net/m0_67598823/article/details/144449473  浏览:    关键词:Leetcode3264:K 次乘运算后的最终数组 I

题目描述: 

给你一个整数数组 nums ,一个整数 k  和一个整数 multiplier 。

你需要对 nums 执行 k 次操作,每次操作中:

  • 找到 nums 中的 最小 值 x ,如果存在多个最小值,选择最 前面 的一个。
  • 将 x 替换为 x * multiplier 。

请你返回执行完 k 次乘运算之后,最终的 nums 数组。

 代码思路: 

这个代码的目的是对输入数组 nums 进行操作,每次找出数组中的最小值,并将这个最小值乘以一个给定的 multiplier(乘数),重复这个过程 k 次。最终,函数需要返回经过 k 次操作后的数组。同时,函数通过 returnSize 参数返回数组的大小。

以下是代码的思路分析:

  1. 初始化变量
    • min 用于存储当前遍历到的最小值。
    • index 用于记录当前最小值的索引。
    • 外层循环变量 i 从 0 到 k-1,表示需要进行 k 次操作。
  2. 寻找最小值并更新
    • 内层循环遍历 nums 数组,从 0 到 numsSize-1
    • 在每次内层循环中,比较当前元素 nums[j] 和 min
    • 如果 nums[j] 小于 min,则更新 min 为 nums[j],并更新 index 为当前索引 j
  3. 更新最小值
    • 完成内层循环后,找到了当前数组中的最小值及其索引 index
    • 将 nums[index] 乘以 multiplier,即 nums[index] = nums[index] * multiplier
  4. 重复操作
    • 回到外层循环,重复上述步骤 k 次。
  5. 返回结果
    • 将 numsSize 赋值给 *returnSize,表示返回数组的大小。
    • 返回 nums 数组。注意这里的实现直接返回了原数组 nums 的指针,而不是通过 malloc 分配的新数组。根据函数注释,假设调用者会负责调用 free() 来释放内存,但在这个实现中,实际上并没有分配新内存,因此调用者不需要(也不应该)对返回的指针调用 free()

代码实现:

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* getFinalState(int* nums, int numsSize, int k, int multiplier, int* returnSize) {for(int i=0;i<k;i++){int min=nums[0];int index=0;for(int j=0;j<numsSize;j++){if(min>nums[j]){index=j;min=nums[j];}}nums[index]=nums[index]*multiplier;}* returnSize=numsSize;return nums;
}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词