leetcode.cn 2022年11月4日 打卡题 754. 到达终点数字【一元二次方程解法,时间复杂度O(1)】

本文详细解析LeetCode 2022年11月4日打卡题754,通过一元二次方程在O(1)时间复杂度内找到目标值。内容包括解题思路、规律探索和代码示例,探讨了当delta为偶数时的特殊情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

leetcode 2022年11月4日 打卡题 754. 到达终点数字

写在前面

  首先感谢 @子不语 大佬发布的一元二次方程代码实现的启发。题解链接:子不语-754. 到达终点数字
  本文侧重梳理如何由官方题解的时间复杂度为 O ( ∣ t a r g e t ∣ ) O(∣target∣) O(target)循环迭代方法向时间复杂度为 O ( 1 ) O(1) O(1)的一元二次方程方法的思路、流程的转化。
  此外还对官方题解中一些省略的、自己有疑问的问题给出了证明过程。
  供大家参考学习,欢迎大家共同交流,多多批评指正~

一、基础设定:

  定义自然数的前 n n n项和: S n = n ( n + 1 ) 2 S_{n}= \frac{n(n+1)}{2} Sn=2n(n+1)
  同时定义: S 0 = 0 S_{0}= 0 S0=0

  设: d e l t a = S n − t a r g e t = n ( n + 1 ) 2 − t a r g e t delta=S_{n}-target= \frac{n(n+1)}{2}-target delta=Sntarget=2n(n+1)target

二、解题思路:

S n S_{n} Sn n = 0 n=0 n=0 ~ n n n遍历过程中,

  1. 找到一个最小的 𝑛 𝑛 n,使得满足 S n = t a r g e t S_{n}=target Sn=target
  2. 找到一个最小的 𝑛 𝑛 n,使得满足 d e l t a = S n − t a r g e t > 0 delta=S_{n}−target>0 delta=Sntarget>0 𝑑 𝑒 𝑙 𝑡 𝑎 𝑑𝑒𝑙𝑡𝑎 delta恰好是 0 0 0~ 𝑛 𝑛 n中的某几个数字之和的 2 2 2

三、规律探索:

  毫无疑问,遍历过程中 d e l t a delta delta的值必先 < 0 <0 <0,最终可能遇到 = 0 =0 =0,也可能遇到 > 0 >0 >0

d e l t a delta delta < 0 <0 <0 = 0 =0 =0:即等价于 t a r g e t target target恰好为某个前 n n n项和 S n S_{n} Sn
循环迭代过程如下图: ( t a r g e t = 10 ) (target=10) (target=10)
1. n = 0 n=0 n=0 d e l t a = S 0 − 10 = − 10 delta=S_{0}-10=-10 delta=S010=10
2. n = 1 n=1 n=1 d e l t a = S 1 − 10 = 1 − 10 = − 9 delta=S_{1}-10=1-10=-9 delta=S110=110=9
3. n = 2 n=2 n=2 d e l t a = S 2 − 10 = 3 − 10 = − 7 delta=S_{2}-10=3-10=-7 delta=S210=310=7
4. n = 3 n=3 n=3 d e l t a = S 3 − 10 = 6 − 10 = − 4 delta=S_{3}-10=6-10=-4 delta=S310=610=4
5. n = 4 n=4 n=4 d e l t a =

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值