码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • LeetCode-754. 到达终点数字【数学】


    LeetCode-754. 到达终点数字【数学】

    • 题目描述:
    • 解题思路一:三行代码。发现规律,将target取绝对值不影响结果。若未到达终点继续走即可。情况一:若最后s-target为偶数或0,我们发现可以在之前里面反走一步即可(答案刚刚好是n)。情况二:若s-target为奇数,则需要多走一步或者两步,所以while里面取的是或操作。
    • 解题思路二:判断s大于等于target时可以解方程。n*(n+1)/2>target从而解出n,节省时间,然后依据情况二,可以直接判断得出答案。
    • 解题思路三:0

    题目描述:

    在一根无限长的数轴上,你站在0的位置。终点在target的位置。

    你可以做一些数量的移动 numMoves :

    每次你可以选择向左或向右移动。
    第 i 次移动(从 i == 1 开始,到 i == numMoves ),在选择的方向上走 i 步。
    给定整数 target ,返回 到达目标所需的 最小 移动次数(即最小 numMoves ) 。

    示例 1:

    输入: target = 2
    输出: 3
    解释:
    第一次移动,从 0 到 1 。
    第二次移动,从 1 到 -1 。
    第三次移动,从 -1 到 2 。

    示例 2:

    输入: target = 3
    输出: 2
    解释:
    第一次移动,从 0 到 1 。
    第二次移动,从 1 到 3 。

    提示:

    -10 ^ 9 <= target <= 10 ^ 9
    target != 0
    https://leetcode.cn/problems/reach-a-number/description/?orderBy=most_votes&languageTags=cpp

    解题思路一:三行代码。发现规律,将target取绝对值不影响结果。若未到达终点继续走即可。情况一:若最后s-target为偶数或0,我们发现可以在之前里面反走一步即可(答案刚刚好是n)。情况二:若s-target为奇数,则需要多走一步或者两步,所以while里面取的是或操作。

    在这里插入图片描述

    class Solution {
    public:
        int reachNumber(int target) {
            int t=abs(target),s=0,n=0;
            while(s<t||(s-t)%2) s+=++n;//未到终点或者相距奇数            
            return n;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    时间复杂度O(n)
    空间复杂度O(1)

    解题思路二:判断s大于等于target时可以解方程。n*(n+1)/2>target从而解出n,节省时间,然后依据情况二,可以直接判断得出答案。

    ceil函数是向上取整

    class Solution {
    public:
        int reachNumber(int target) {
            target = abs(target);
            int n = ceil((-1 + sqrt(8L * target + 1)) / 2); // 注意 8*target 会超过 int 范围
            return (n * (n + 1) / 2 - target) % 2 == 0 ? n : n + 1 + n % 2;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    时间复杂度O(1)
    空间复杂度O(1)
    https://leetcode.cn/problems/reach-a-number/solutions/1947254/fen-lei-tao-lun-xiang-xi-zheng-ming-jian-sqj2/?orderBy=most_votes&languageTags=cpp

    解题思路三:0

    
    
    • 1
  • 相关阅读:
    Nacos配置中心实战
    springboot基于spring的宽带管理系统以及实现毕业设计源码250910
    2023年最新无脑安装 Go lang 环境配置并编写、运行、打包第一个 Golang 程序详细步骤,附带图文教程
    浅谈 RxJS: lodash for async、流式任务模型、函数式与响应式的结合
    nginx学习第一天
    闩锁和锁(Latches and Locks)
    PostgreSql 数据库,根据库名称,查询这个库下面的所有表名称和这个表的注释
    2023.10 秋爽版 java 软件授权激活 架构 java代码混淆 按日期授权 不联网
    Fastjson反序列化随机性失败
    IVF-PQ 基于量化的向量检索算法
  • 原文地址:https://blog.csdn.net/qq_45934285/article/details/127683974
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号