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

打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

实行效果:通过
实行用时和内存消耗如下:
 

 
  1. int findClosestNumber(int* nums, int numsSize) {
  2.     int res = nums[0];        // 已遍历元素中绝对值最小且数值最大的元素
  3.     int dis = abs(nums[0]);   // 已遍历元素的最小绝对值
  4.     for (int i = 0; i < numsSize; ++i) {
  5.         if (abs(nums[i]) < dis) {
  6.             dis = abs(nums[i]);
  7.             res = nums[i];
  8.         } else if (abs(nums[i]) == dis) {
  9.             res = fmax(res, nums[i]);
  10.         }
  11.     }
  12.     return res;
  13. }
复制代码
解题思绪:

  • 初始化

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

  • 遍历数组

    • 利用一个 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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表