news 2026/4/16 17:15:36

leetcode 754. Reach a Number 到达终点数字-耗时100%

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 754. Reach a Number 到达终点数字-耗时100%

Problem: 754. Reach a Number 到达终点数字

解题过程

耗时100%

通过观察下面的式子,可以发现可以向左移动多次,而且每次向左移动,相当于向右少移动偶数次, 1 - 2 + 3 = 1+2+3 - 2*2,

-1+2+3 = 1+2+3 - 1 * 2 ,

1 + 2 + 3 + 4 - 5 = 1 + 2 + 3 + 4 + 5 - 2 * 5

所以向左移动相当于减去一个偶数,所以最后的结果是 1+2+3+。。。+k - 偶数= (1+k)*k/2 - 偶数

答案首先找到满足条件的不需要减去的数字,然后找到累加和>target的n,奇数-偶数=奇数,偶数-偶数=偶数,所以 被减数 和 差 的奇偶性相同,不满足的话n++

而且被减去的偶数,一定可以通过1,2,。。。,k这些数字凑出来,具体的可以翻看官方题解的

就像12: 1 + 2 - 3 + 4 - 5 + 6 + 7,偶数可以通过-3 -5凑出来

// 1-2+3 2 // 1+2 3 // -1+2+3 4 // 1 + 2 + 3 + 4 - 5 5 // 1 + 2 + 3 6 // 1 + 2 + 3 - 4 + 5 7 // 1 + 2 - 3 + 4 - 5 + 6 + 7 12

Code

class Solution { public: int reachNumber(int target) { // 1-2+3 2 // 1+2 3 // -1+2+3 4 // 1 + 2 + 3 + 4 - 5 5 // 1 + 2 + 3 6 // 1 + 2 + 3 - 4 + 5 7 // 1 + 2 - 3 + 4 - 5 + 6 + 7 12 target = abs(target); int n = sqrt( (double)( target * 2 ) ); double f1 = n * (n+1) / 2.0f; double f2 = (n+1) * (n+2) / 2.0f; if(f1==(double)target) { return n; } if(f2==(double)target) { return n+1; } while(f1 < target) { n++; f1 = n * (n+1) / 2.0f; } while( true ) { int l = 2, r = n * 2, mid, sum; sum = n * (n + 1) / 2; // while(l <= r) { // mid = (l + r) / 2; // if(sum - mid==target && (mid%2==0)) return n; // if(l==r) break; // if(sum - mid < target) { // r = mid-1; // } else { // l = mid+1; // } // } if(sum%2==1 && target%2==0) { n++; continue; } else if(sum%2==0 && target%2==1) { n++; continue; } else { return n; } } return 0; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 15:49:54

Java计算机毕设之基于Java Web的校园菜鸟驿站管理系统校园菜鸟驿站管理系统Java校园快递取件管理系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 13:34:05

自动化测试的艺术:Ascend C算子生成测试数据脚本解析与增强

在昇腾AI处理器生态中&#xff0c;测试数据生成脚本是算子开发的质量生命线&#xff0c;本文将从工业级实践角度深度解析其设计哲学与增强策略。 目录 摘要 一、技术原理深度解析 1.1 &#x1f3d7;️ 架构设计理念&#xff1a;两段式测试框架 1.2 &#x1f527; 核心算法实…

作者头像 李华
网站建设 2026/4/16 13:37:21

NO16数据结构选择题考点|树

树 结点的度&#xff1a;是指该结点的孩子数量 \begin{aligned} &\textbf{结点的度}&#xff1a;\text{是指该结点的孩子数量} \end{aligned} ​结点的度&#xff1a;是指该结点的孩子数量​路径和路径长度&#xff1a;树中两个结点之间的路径是由这两个结点之间所经过的结…

作者头像 李华
网站建设 2026/4/16 12:00:42

Flutter跨平台开发权威宝典:架构解析与实战进阶

欢迎大家加入开源鸿蒙跨平台开发者社区&#xff0c;一起共建开源鸿蒙跨平台生态。 ### Flutter 测试驱动开发与架构模型实践 Flutter跨平台开发权威宝典&#xff1a;架构解析与实战进阶 Flutter 核心特性详解 Flutter 是 Google 推出的开源跨平台 UI 框架&#xff0c;于 201…

作者头像 李华
网站建设 2026/4/16 16:56:53

计算机Java毕设实战-基于springboot非物质文化遗产数字化传承非遗历史管理、非遗传承人管理、演出类型管理、非遗演出管理【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 11:57:37

【JAVA】JVM类加载器知识笔记

JVM类加载器详解 一、类加载器概述 1、什么是类加载器&#xff1f; 类加载器&#xff08;ClassLoader&#xff09;是Java虚拟机&#xff08;JVM&#xff09;的重要组成部分&#xff0c;它负责将字节码文件&#xff08;.class文件&#xff09;加载到内存中&#xff0c;并转换为J…

作者头像 李华