java - 如何计算该算法的时间复杂度

标签 java algorithm time-complexity

我编写了一个函数,它获取给定的数字并将其添加到其相反的数字,直到该数字是回文。我正在尝试计算代码的时间复杂度,但我根本不知道如何去做,甚至不知道如何开始。有人可以告诉我该怎么做吗?另外,这是最有效的方法还是将整数转换为字符串更好?

void getPali(int num) {        
    int n = 0;
    int nNum;
    while(true) {
        nNum = num;
        int rNum = 0;            
        while (nNum > 0) {
            int rem = nNum % 10;                
            nNum = nNum / 10;                 
            rNum = rNum * 10 + rem;                
        }
        if(rNum == num) break;
        num += rNum;              
        n++;
    }
}

最佳答案

是否存在是数学上的未解题Lychrel numbers以 10 为基数。Lychrel 数是指重复将数字反转并与其自身相加的过程无法产生回文的数字。

由于您的代码实现了此过程,因此无法说明代码的时间复杂度是多少。

当然,这假设“int”是无界的,并且不会像在真实的 java 程序中那样进行环绕,但时间复杂度对于有界域来说是毫无意义的。

推测起点196不会终止。

关于java - 如何计算该算法的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28121087/

相关文章:

java - 在非常大的树上执行 DFS 的最佳方法是什么?

java - JODA期间未返回正确的值?

java - JSF 无法获取带参数的方法返回值的属性

algorithm - 用于减少电话号码位数的压缩扩展算法

java - 遍历二叉树迭代或递归-复杂度分析

java - 持久化有序域对象

java - 随机洗牌类(class)成员的方法

algorithm - 算法时间复杂度计算

java - Treemap 插入与 HashMap 插入的复杂性

java - 数独生成器算法优化 欢迎