C语言刷题 LeetCode 30天挑战 (二)快慢指针法

Write an algorithm to determine if a number is "happy"

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of thesquares of its digits,

and repeat the process until the number equals 1 (where it will stay, or it loops endlessly in a cycle which does notinclude 1. Those numbers for which this process ends in 1 are happy numbers.

Input:19

Output:true

Explanation

1^2 + 9^2 = 82

8^2 + 2^2 = 68

6^2 + 8^2 = 100

1^2 + 0^2 + 0^2 = 1

循环检测 是不是在1轮回 快慢指针~

cpp 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define DEBUG

int next_n(int n){
    int r=0;
    while(n != 0){
        int d = n % 10;
        n /= 10;
        r += d*d;
    }
    return r;
}

bool contains(int *history,int size,int n){
    for(int i=0; i<size ;++i){
        if(history[i] == n){
            return true;
        }
    }
    return false;
}

bool ishappy(int n){
    int slow=n;
    int fast=n;
    
    do{
        slow = next_n(slow);
        fast = next_n(next_n(fast));
#ifdef DEBUG
        printf("%d %d \n",slow,fast);
#endif
    } while (slow != fast);

    return false;
}

int main()
{
    ishappy(19);
    if(ishappy)
        printf("yes");
    else printf("no");
    return 0;
} 

slow 和 fast 都初始化为输入的数字 n。

slow 每次移动一步,即计算一次数字的平方和;fast 每次移动两步,计算两次平方和。

在循环中,如果 slow == fast,则表示数字进入了循环,不会到达 1。

但是,在这段代码中,无论循环如何执行,最后的结果总是返回 false,这个逻辑需要进一步调整。

相关推荐
LOVE️YOU1 小时前
Python 中 Tuple 为什么有时可 Hash,有时不可 Hash?
开发语言·python·哈希算法
木卫二号Coding1 小时前
推荐Linux统计文件大小并操作删除工具-ncdu
linux·运维·服务器
李永奉1 小时前
C语言-指针函数与函数指针及回调函数的使用
c语言·开发语言
小oo呆1 小时前
【学习心得】迭代器和可迭代对象
开发语言·python
AC赳赳老秦2 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
钱栈up2 小时前
mvn compile 卡死在 javac 阶段:一次类型不匹配的排查与修复
java·开发语言
迅猛龙办公室2 小时前
Python输出当前计算机的系统日期和时间
开发语言·前端·python
无名猿2 小时前
C++ 查找算法:std::find 与容器成员 find 的性能差距
c++·性能优化·stl·标准库
杨丰玮4182 小时前
C语言基础知识(一)————各类符号的含义与输入输出库(stdio)
c语言·开发语言
程序猿编码3 小时前
工业视觉多任务方案:可编程梯度信息视觉框架,训练评估 + C++ 部署完整实战
开发语言·c++·视觉·推理引擎