九天猎人 发表于 2025-1-25 20:53:12

Leecode刷题C语言之找到最靠近0的数字

实行效果:通过
实行用时和内存消耗如下:
 https://i-blog.csdnimg.cn/direct/0ef8053c27974af2836799ef8c00b518.png
https://i-blog.csdnimg.cn/direct/a334a662580a4884b45a0dff983c8ca5.png 
int findClosestNumber(int* nums, int numsSize) {
    int res = nums;      // 已遍历元素中绝对值最小且数值最大的元素
    int dis = abs(nums);   // 已遍历元素的最小绝对值
    for (int i = 0; i < numsSize; ++i) {
      if (abs(nums) < dis) {
            dis = abs(nums);
            res = nums;
      } else if (abs(nums) == dis) {
            res = fmax(res, nums);
      }
    }
    return res;
}

解题思绪:

[*]初始化:

[*]res 变量被初始化为数组 nums 的第一个元素 nums。这代表当前已遍历元素中绝对值最小且数值最大的元素。
[*]dis 变量被初始化为 nums 的绝对值,表现当前已遍历元素中的最小绝对值。

[*]遍历数组:

[*]利用一个 for 循环遍历数组 nums,从索引 0 到 numsSize - 1。

[*]比力绝对值:

[*]在每次迭代中,检查当前元素 nums 的绝对值 abs(nums)。

[*]更新最小绝对值:

[*]假如 abs(nums) 小于当前记载的最小绝对值 dis,则更新 dis 为 abs(nums),并将 res 更新为当前元素 nums。这意味着找到了一个新的更小绝对值的元素。

[*]处置惩罚雷同绝对值的环境:

[*]假如 abs(nums) 等于当前记载的最小绝对值 dis,则利用 fmax(res, nums) 更新 res。这意味着在绝对值相等的环境下,选择数值较大的元素。fmax 函数返回两个数中较大的一个。

[*]返回效果:

[*]遍历完成后,返回 res。此时,res 存储的是数组 nums 中绝对值最小且数值最大的元素。

总结:


[*]该函数的主要目标是找到数组中绝对值最小且数值最大的元素。
[*]通过遍历数组,比力元素的绝对值,并在必要时更新最小绝对值和效果变量来实现这一目标。
[*]在绝对值雷同的环境下,选择数值较大的元素。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Leecode刷题C语言之找到最靠近0的数字