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

LeetCode2239找到最接近 0 的数

题目:

给你一个长度为 n 的整数数组 nums ,请你返回 nums 中最 接近 0 的数字。如果有多个答案,请你返回它们中的 最大值 。

题目分析

题目看似简洁,实则蕴含着一些关键的逻辑判断点。我们的核心任务是遍历数组,逐个对比元素与 0 的距离,距离的衡量方式采用绝对值。因为在数轴上,一个数与 0 的距离就是其绝对值大小。同时,还要留意处理存在多个距离相等的元素这种特殊情况,按要求返回最大的那个。

代码实现 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// 函数定义,用于查找最接近0的数字
int findClosestNumber(int* nums, int numsSize) {
    int closest = nums[0];
    for (int i = 1; i < numsSize; i++) {
        int curAbs = abs(nums[i]);
        int closestAbs = abs(closest);
        if (curAbs < closestAbs) {
            closest = nums[i];
        } else if (curAbs == closestAbs) {
            closest = closest > nums[i]? closest : nums[i];
        }
    }
    return closest;
}

int main() {
    // 示例数组,可以替换此处的数组内容来进行不同情况的测试
    int nums[] = { -4, -2, 1, 3, -1 };
    int numsSize = sizeof(nums) / sizeof(nums[0]);
    int result = findClosestNumber(nums, numsSize);
    printf("最接近0的数(多个时取最大)是:%d\n", result);

    return 0;
}

代码解释

  1. 初始化阶段:
    int closest = nums[0]; 这句代码先将 closest 初始化为数组 nums 的第一个元素。这么做的原因是要为后续遍历对比找一个起始基准,从第一个元素开始逐步筛选出真正最接近 0 的元素。

  2. 遍历循环:
    for (int i = 1; i < numsSize; i++) 从数组的第二个元素(索引为 1)开始遍历整个数组。进入循环体后,先计算当前遍历到的元素 nums[i] 的绝对值 curAbs = abs(nums[i]);,以及当前 closest 的绝对值 int closestAbs = abs(closest);

  3. 比较判断:

    • 当 curAbs < closestAbs 时,意味着当前元素距离 0 更近,所以毫不犹豫更新 closest 为当前元素,即 closest = nums[i]
    • 要是 curAbs == closestAbs,这就表明出现了多个距离 0 相等的元素。按照题目要求,此时要选取较大的那个元素作为 closest,通过三目运算符 closest = closest > nums[i]? closest : nums[i]; 巧妙实现比较并赋值。
  4. 返回结果:
    循环结束后,closest 里存放的就是整个数组中最符合要求的值,最后 return closest; 将其返回。

 


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

相关文章:

  • Django简介与虚拟环境安装Django
  • 大语言模型的语境中“越狱”和思维链
  • Java 对象池管理的高性能工具库 Apache Commons Pool 2
  • 基于Python的心电图报告解析与心电吸引子绘制
  • 力扣-数组-303 区域和检索-数组不可变
  • 前端项目搭建和基础配置
  • Kotlin报错:lateinit property xxx has not been initialized
  • Spring IoC的基本概念
  • 解释器模式的理解和实践
  • RabbitMq 基础
  • 【大数据技术基础】 课程 第1章 大数据技术概述 大数据基础编程、实验和案例教程(第2版)
  • node.js基础学习-JWT登录鉴权(十四)
  • 常见限流算法详细解析
  • 投资伦敦金注意什么指标
  • 思特奇亮相2024数字科技生态大会,以“智”谋新共赢AI新时代
  • AUTOSAR AP 汽车API知识点总结(Automotive API )R24-11
  • flinkSql 将流和表的互相转换
  • mysql Kill脚本
  • 【干旱指数】非一致性干旱指数:SnsPI
  • 游戏引擎学习第34天
  • vscode通过ssh连接虚拟机进行开发
  • Next.js 系统性教学:深入理解缓存与数据优化策略
  • Spring07——AOP通知以及几个相关案例
  • 4.4 可靠传输的工作原理
  • 自然语言处理的未来愿景
  • 【Nacos03】消息队列与微服务之Nacos 集群部署