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

千问 LeetCode 2543. 判断一个点是否可以到达 C语言实现

这道题的核心是从终点反向推导,利用最大公约数(GCD) 的性质来判断。C语言实现与Java思路完全一致,只是语法略有不同。

核心结论

从 (targetX, targetY) 能反向到达 (1, 1) 的充要条件是:
gcd(targetX, targetY) 是 2 的幂次方(即形如 1, 2, 4, 8, 16...)。

判断一个数 g 是否为 2 的幂次方:g > 0 且 (g & (g - 1)) == 0。

C语言实现

// 辗转相除法求最大公约数
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}

bool isReachable(int targetX, int targetY) {
// 1. 计算最大公约数
int g = gcd(targetX, targetY);

// 2. 判断 g 是否为 2 的幂次方
// g > 0 且 (g & (g - 1)) == 0
return (g & (g - 1)) == 0;
}

代码说明

- gcd 函数:标准欧几里得算法,用 while 循环实现,效率高。
- (g & (g - 1)) == 0:位运算判断 2 的幂次方。例如:
- g = 8(二进制 1000),g-1 = 7(二进制 0111),1000 & 0111 = 0 → 是 2 的幂。
- g = 6(二进制 0110),g-1 = 5(二进制 0101),0110 & 0101 = 0100 ≠ 0 → 不是 2 的幂。
- bool 类型:C语言需要包含 <stdbool.h> 头文件(LeetCode 环境已默认包含)。
- 时间复杂度:O(log min(targetX, targetY))。
- 空间复杂度:O(1)。

另一种写法(直接除2法)

如果你对位运算不太熟悉,也可以用循环除2的方式判断:

int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}

bool isReachable(int targetX, int targetY) {
int g = gcd(targetX, targetY);

// 不断除以2,看最后是否等于1
while (g % 2 == 0) {
g /= 2;
}
return g == 1;
}

示例验证
输入 GCD 是否为2的幂 结果
(6, 9) 3 否 false
(4, 7) 1 是 true
(8, 12) 4 是 true
(10, 15) 5 否 false
(1, 1) 1 是 true

两种写法都可以通过 LeetCode 测试,推荐使用位运算版本,更简洁高效。

http://www.jsqmd.com/news/861317/

相关文章:

  • torchtitan-npu:大模型训练框架快速上手实战
  • 野兽派不是乱来:拆解Midjourney V6中色彩暴力、笔触失序与构图反叛的5层参数逻辑
  • 双波长离轴共路数字全息测量关键技术【附代码】
  • 世界模型的本质还是人机环境系统智能
  • 2026AMERIDRIVE离合器授权服务商推荐名录及参数对比:BPRT、FORMSPRAG、MARLAND、ROLLWAY选择指南 - 优质品牌商家
  • 豆包 LeetCode 2543. 判断一个点是否可以到达 Java实现
  • 户外门禁怕淋雨?这款灌胶防雨双频门禁好像还不错哦!
  • Agentic Search能替代GraphRAG吗,结论清晰了
  • 2026年5月更新:儿童山地自行车生产厂家综合推荐与深度解析 - 2026年企业推荐榜
  • 写给前端的 CANN-GraphCompiler:昇腾图编译器到底是啥?
  • ElevenLabs荷兰文语音生成速度对比实测:从4.2s→0.8s的WebSocket流式优化路径(附可复用代码片段)
  • 选C盘清理厂商不是看名气,是看这5步决策逻辑
  • 《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》017、YOLO-DEIM与DETR-DEIM的调试手记
  • [模型解析] Claude 4: 技术架构与能力评测
  • PHP - PHP 简易 Web 服务器、基础接口开发
  • 将数据从 OPPO 传输到 iPhone 的 4 个有效方案
  • CANN 算子调优:榨干昇腾硬件性能
  • 大模型终于看懂立体几何!中科院联合阿里提出统一形式语言,刷新解析SOTA
  • ElevenLabs河南话合成效果翻车?5大本地化陷阱与97.3%可听度提升实测方案
  • 如何10倍提升英语学习效率:词达人自动化助手终极教程
  • 谷歌收录怎么做比较快?提升网页打开速度至2秒内的优化方案
  • 2026年HR推荐的10个专业简历模板网站,从模板到写法
  • Github创建项目(创建仓库、新建项目、新建仓库)步骤
  • 删库跑路不用怕:带你秒懂数据库的“时光机”功能——PITR
  • ElevenLabs老挝文语音接入全链路详解:从API密钥配置、音色微调到低延迟TTS部署(含Laos Unicode编码避坑清单)
  • ElevenLabs陕西话支持深度测评(含3大隐藏限制与绕过方案):实测87%方言词准确率背后的工程真相
  • 我在大厂做开发的5年:那些996的日子
  • 从文件上传到 RAG 检索:真正看懂了一个 AI 项目的知识库链路
  • Midjourney色调分离失败的7大隐藏诱因,第4种连官方Support都曾误判为GPU故障
  • 1987年7月14日晚上19-21点出生性格、运势和命运