leetcode660. Remove 9

leetcode660. Remove 9

题意:

从整数1开始,删除任何包含9的整数,如9,19,29 ...

所以现在,你将有一个新的整数序列:1,2,3,4,5,6,7,8,10,11,...

给定正整数n,您需要在删除后返回第n个整数。注意1将是第一个整数。

思路:

因为要去除所有的包含9的数。转化成9进制就好了???真是奇巧淫技呀。

ac代码:

C++

class Solution {
public:
    int newInteger(int n) {
        int res = 0, count = 1;
        while(n)
        {
            res = res + (n % 9) * count;
            n /= 9;
            count *= 10;
        }    
        return res;
    }
};

python

class Solution:
    def newInteger(self, n):
        """
        :type n: int
        :rtype: int
        """
        res = 0
        count = 1
        while n:
            res += (n % 9) * count
            count *= 10
            n //= 9
        return res
原文地址:https://www.cnblogs.com/weedboy/p/7357801.html