• leetcode660 remove 9


    思路1:

    二分+数位dp。

    实现:

     1 class Solution 
     2 {
     3 public:
     4     int dfs(int now, bool ok, bool flag, int dp[][2], int num[])
     5     {
     6         if (now == 0) return ok;
     7         if (!flag && dp[now][ok] != -1)
     8             return dp[now][ok];
     9         int res = 0;
    10         int u = flag ? num[now] : 9;
    11         for (int i = 0; i <= u; i++)
    12         {
    13             res += dfs(now - 1, ok || (i == 9), flag && i == u, dp, num);
    14         }
    15         return flag ? res : dp[now][ok] = res;
    16     }
    17     int newInteger(int n) 
    18     {
    19         long long l = n, r = 5e9, res = n;
    20         int dp[15][2], num[15]; 
    21         while (l <= r)
    22         {
    23             long long m = (l + r) >> 1;
    24             memset(dp, -1, sizeof dp);
    25             memset(num, 0, sizeof num);
    26             int sum = 0;
    27             long long tmp = m;
    28             while (tmp)
    29             {
    30                 num[++sum] = tmp % 10;
    31                 tmp /= 10;
    32             }
    33             int ans = dfs(sum, 0, true, dp, num);
    34             if (m - ans < n) l = m + 1;
    35             else 
    36             {
    37                 r = m - 1;
    38                 if (m - ans == n)
    39                     res = m;
    40             }
    41         }
    42         return res;
    43     }
    44 };

    思路2:

    去掉包含9的数之后实际上就是变成了9进制。

    实现:

     1 class Solution 
     2 {
     3 public:
     4     int newInteger(int n) 
     5     {
     6         int sum = 0, x = 1;
     7         while (n)
     8         {
     9             sum += n % 9 * x;
    10             n /= 9;
    11             x *= 10;
    12         }
    13         return sum;
    14     }
    15 };
  • 相关阅读:
    随想 20180517
    随想 20180516
    随想 20180514
    alpinelinux
    装系统时总是提示 保存分区表时出现错误(0000000001)函数不正确
    kindeditor在Firefoxt 和 Chrome 下不能取到值的解决方法
    浏览器兼容
    php生成随机密码的几种方法
    按钮效果
    linux下修改/dev/shm tmpfs文件系统大小
  • 原文地址:https://www.cnblogs.com/wangyiming/p/7411410.html
Copyright © 2020-2023  润新知