zltzlt 发表于 2020-1-22 19:18:54

数字问题

给一个转换规则来转换数字 n:

n 是奇数,n = 3n + 1
n 是偶数,n = n / 2
经过若干次转换后,n 会变成 1。

现在给定 n,输出它转换到 1 需要的次数。

Python 66 ms :

class Solution:
    def digitConvert(self, n):
      r = 0
      while n != 1:
            n = (3 * n + 1 if n % 2 else n // 2)
            r += 1
      return r

C++ 11 ms :

class Solution
{
public:
    /**
   * @param n: the number n
   * @return: the times n convert to 1
   */
    int digitConvert(int n)
    {
      int r = 0;
      while (n != 1)
      {
            n = (n % 2 ? 3 * n + 1 : n / 2);
            r++;
      }
      return r;
    }
};

JavaScript 202 ms :

/**
* @param n: the number n
* @return: the times n convert to 1
*/
function digitConvert(n) {
    var r = 0;
    while (n != 1) {
      n = (n % 2 ? 3 * n + 1 : n / 2);
      r++;
    }
    return r;
}
页: [1]
查看完整版本: 数字问题