当前位置: 首页 > article >正文

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

执行结果:通过

执行用时和内存消耗如下:

 

 

int findClosestNumber(int* nums, int numsSize) {
    int res = nums[0];        // 已遍历元素中绝对值最小且数值最大的元素
    int dis = abs(nums[0]);   // 已遍历元素的最小绝对值
    for (int i = 0; i < numsSize; ++i) {
        if (abs(nums[i]) < dis) {
            dis = abs(nums[i]);
            res = nums[i];
        } else if (abs(nums[i]) == dis) {
            res = fmax(res, nums[i]);
        }
    }
    return res;
}

解题思路:

  1. 初始化
    • res 变量被初始化为数组 nums 的第一个元素 nums[0]。这代表当前已遍历元素中绝对值最小且数值最大的元素。
    • dis 变量被初始化为 nums[0] 的绝对值,表示当前已遍历元素中的最小绝对值。
  2. 遍历数组
    • 使用一个 for 循环遍历数组 nums,从索引 0 到 numsSize - 1
  3. 比较绝对值
    • 在每次迭代中,检查当前元素 nums[i] 的绝对值 abs(nums[i])
  4. 更新最小绝对值
    • 如果 abs(nums[i]) 小于当前记录的最小绝对值 dis,则更新 dis 为 abs(nums[i]),并将 res 更新为当前元素 nums[i]。这意味着找到了一个新的更小绝对值的元素。
  5. 处理相同绝对值的情况
    • 如果 abs(nums[i]) 等于当前记录的最小绝对值 dis,则使用 fmax(res, nums[i]) 更新 res。这意味着在绝对值相等的情况下,选择数值较大的元素。fmax 函数返回两个数中较大的一个。
  6. 返回结果
    • 遍历完成后,返回 res。此时,res 存储的是数组 nums 中绝对值最小且数值最大的元素。

总结:

  • 该函数的主要目标是找到数组中绝对值最小且数值最大的元素。
  • 通过遍历数组,比较元素的绝对值,并在必要时更新最小绝对值和结果变量来实现这一目标。
  • 在绝对值相同的情况下,选择数值较大的元素。

http://www.kler.cn/a/518829.html

相关文章:

  • [Dialog屏幕开发] 屏幕绘制(下拉菜单)
  • 【机器学习】深入探索SVM:支持向量机的原理与应用
  • chrome源码剖析—UI架构消息机制
  • C++ list 容器用法
  • Unity|小游戏复刻|见缝插针1(C#)
  • ThreeJS示例教程200+【目录】
  • 网络安全 | F5-Attack Signatures详解
  • mysql-04.索引
  • 2_高并发内存池_各层级的框架设计及ThreadCache(线程缓存)申请内存设计
  • 数据可视化的图表
  • 找不到mfc140u,具体原因分析
  • Ubuntu20.04 深度学习环境配置(持续完善)
  • RA-Eco-RA2L1-48PIN-V1.0开发板前期准备避坑指南
  • Apache Doris 2.1.8 版本正式发布
  • 51单片机——串口向电脑发送数据
  • RDMA 工作原理 | 支持 RDMA 的网络协议
  • C语言教程——文件处理(2)
  • 神经网络|(四)概率论基础知识-古典概型
  • MaxCompute—阿里云原生大数据计算机服务——SQL概述与服务支持
  • linux-execve的使用
  • C# 利用ssh 开启一个命令交互窗口
  • 微信小程序部分用户报错ERR_CONNECTION_REFUSED连接被拒绝
  • 海外问卷调查如何影响企业的经营?在品牌建设中有何指导意义?
  • 【PyTorch】3.张量类型转换
  • 使用JavaScript实现猜数字小功能
  • SWPU 2022 新生赛--web题