首页 > 其他 > 详细

Numbers With Repeated Digits

时间:2020-01-03 13:27:45      阅读:77      评论:0      收藏:0      [点我收藏+]

2020-01-03 12:01:46

问题描述

技术分享图片

问题求解

确实可以当作数学题去做,但是要分类讨论什么的还是有点麻烦的。

这个时候万能的dfs上场了,直接暴力检索,真的太强了。

    int res = 0;
    public int numDupDigitsAtMostN(int N) {
        dfs(0, 0, N);
        return N - res + 1;
    }
    
    private void dfs(long curr, int used, int N) {
        if (curr > N) return;
        res += 1;
        for (int i = 0; i < 10; i++) {
            if (i == 0 && used == 0) continue;
            if ((used & (1 << i)) > 0) continue;
            dfs(curr * 10 + i, used | (1 << i), N);
        }
    }

  

 

Numbers With Repeated Digits

原文:https://www.cnblogs.com/hyserendipity/p/12144263.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!