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

【LeetCode 每日一题】3516. 找到最近的人

Problem: 3516. 找到最近的人

文章目录

  • 整体思路
  • 完整代码
  • 时空复杂度
    • 时间复杂度:O(1)
    • 空间复杂度:O(1)

整体思路

这段代码的目的是在一个非常简单的场景下解决一个“找最近点”的问题。给定三个整数 x, y, 和 z,它需要判断 xy 中哪一个离 z 更近。如果它们距离 z 一样近,则有一个特殊的返回值。

该算法的思路非常直接,是一种纯粹的 计算与比较 方法,没有任何复杂的循环或数据结构。

  1. 计算距离

    • 算法首先分别计算 xz 的距离和 yz 的距离。
    • 为了处理正负数的情况(例如 x=5, z=10x=15, z=10 的距离都是5),代码使用了 Math.abs() 函数来取绝对值。
    • int one = Math.abs(x - z); 计算 xz 之间的距离。
    • int two = Math.abs(y - z); 计算 yz 之间的距离。
  2. 比较距离并确定返回值

    • 在计算出两个距离 onetwo 之后,代码使用了一个嵌套的三元运算符来进行多路分支判断,以确定最终的返回值。
    • 情况一:距离相等
      • one == two ? ...:首先检查两个距离是否相等。
      • 如果 one == twotrue,则直接返回 0。这对应题目中的特殊规则:如果 xyz 的距离相等,则返回 0
    • 情况二:距离不相等
      • 如果 one == twofalse,则执行冒号后面的部分 one < two ? 1 : 2
      • 子情况 A:x 更近
        • one < two ? 1 : ...:判断 xz 的距离是否小于 yz 的距离。
        • 如果 one < twotrue,说明 x 更近,返回 1
      • 子情况 B:y 更近
        • 如果 one < twofalse,说明 y 更近(因为前面已经排除了相等的情况),返回 2

完整代码

class Solution {/*** 判断 x 和 y 哪个离 z 更近。* @param x 第一个整数* @param y 第二个整数* @param z 参考整数* @return 如果 x 和 y 距离 z 相等,返回 0。*         如果 x 比 y 更近,返回 1。*         如果 y 比 x 更近,返回 2。*/public int findClosest(int x, int y, int z) {// 步骤 1: 计算 x 到 z 的距离int one = Math.abs(x - z);// 步骤 2: 计算 y 到 z 的距离int two = Math.abs(y - z);// 步骤 3: 使用嵌套的三元运算符比较距离并返回结果// 首先判断距离是否相等return one == two ? 0 : // 如果不相等,再判断哪个更小(one < two ? 1 : 2);}
}

时空复杂度

时间复杂度:O(1)

  1. 操作分析
    • 代码中执行的所有操作都是基本的:两次减法、两次 Math.abs() 调用、一次相等比较、一次小于比较,以及一次三元运算。
    • 这些操作的执行时间是固定的,不依赖于输入 x, y, z 的具体数值大小(在整数表示范围内)。

综合分析
算法的执行时间是一个常数。因此,其时间复杂度为 O(1)

空间复杂度:O(1)

  1. 存储分析
    • 算法在执行过程中只使用了两个额外的整型变量 onetwo 来存储中间计算结果。
    • 这些变量的数量是固定的,不随任何输入的变化而改变。

综合分析
算法没有使用任何与输入规模成比例的额外数据结构。因此,其额外辅助空间复杂度为 O(1)

http://www.dtcms.com/a/388742.html

相关文章:

  • 团体程序设计天梯赛-练习集 L1-030 一帮一
  • delphi 最大String
  • 线程安全的C++对象:深入探讨与实现
  • 关于段访问机制
  • 如何判断nmos和pmos导通和截止
  • 密码攻击技术全景:模型、方法与攻防演进
  • Avalonia跟WPF的不同点
  • 下载 | Win11 25H2 准正式版更新!(ISO映像、2025年度版本、26200.6713、Windows 11)
  • 2025年生态环境大数据技术发展潜力大不大?
  • opencv静态编译win10
  • Linux进程控制与编程实战:从fork到mini-shell的完整指南
  • Python实现三角龙优化算法 (Triceratops Optimization Algorithm, TOA) 优化函数(附完整代码)
  • JS开发工具有哪些?常用JS开发工具推荐、JS调试工具对比与最佳实践分享
  • QNX系统入门总结
  • 网站服务相关问题
  • 系统设计(Python\JAVA)选题
  • 移动零_优选算法(C++)
  • 【字节跳动】LLM大模型算法面试题:llama 输入句子长度理论上可以无限长吗
  • 基于STM32单片机的超声波跟随婴儿车设计
  • 深入理解 Linux 系统调用
  • 工厂模式VS抽象工厂模式
  • Python面试题及详细答案150道(136-150) -- 网络编程及常见问题篇
  • type 对比 interface【前端TS】
  • qt使用camke时,采用vcpkg工具链设置VTK的qt模块QVTKOpenGLNativeWidget
  • 【Linux网络编程】传输层协议-----TCP协议
  • 英莱科技焊缝跟踪系统亮相德国埃森焊接展,激光视觉点亮世界舞台
  • 【提示工程】向AI发出高质量的指令(实战篇)
  • LG P5127 子异和 Solution
  • 从位运算角度重新理解树状数组
  • 从零开始构建Kubernetes Operator:一个完整的深度学习训练任务管理方案