当前位置: 首页 > article >正文

leetcode 902. Numbers At Most N Given Digit Set

题目链接

Given an array of digits which is sorted in non-decreasing order. You can write numbers using each digits[i] as many times as we want. For example, if digits = ['1','3','5'], we may write numbers such as '13''551', and '1351315'.

Return the number of positive integers that can be generated that are less than or equal to a given integer n.

单纯的进制问题,没有0好做多了

以n是一个m位数为举例,如果是k进制,那么位数小于m的数包括,1位k个数,2位k^2 ..... m-1位k^(m-1);  把这些数相加

再计算位数为m的数,看n的当前位上的数s[i]在k个数digits的位置

如果s[i]大于k个数中j个数,那么后面低位排列组合就是:j * k^(当前第几位-1)

s[i] ==digits[j] 刚好在位置上的就计算下一位;

s[i]不在digits中就没必要继续计算了,因为没有边界问题了

class Solution {
public:
    int atMostNGivenDigitSet(vector<string>& digits, int n) {
        bool dg[10] = {false}, stl=true;
        for (auto c : digits) dg[c[0]-'0'] = true;
        long dp[11] = {0},dlen = digits.size(), rst = 0, cl;
        dp[0] =1;
        for (int i = 1 ; i < 11; i++) dp[i] = dlen*dp[i-1];
        auto s = to_string(n);
        int slen = s.size();
        for (int i = 0 ; i< slen; i++) {
            rst += dp[slen -i -1];
            
            if (stl) {
                cl = 0;
                for (int j = 0; j< s[i]- '0'; j++) if (dg[j]) cl++;
                if (i==slen-1 && dg[s[i]-'0']) cl++;
                rst += dp[slen -i -1] *cl;
                if(!dg[s[i]-'0']) stl = false;
            }
        }
        return rst-1;
    }
};


http://www.kler.cn/a/286200.html

相关文章:

  • MySQL知识点总结(十七)
  • Spring Boot项目如何使用MyBatis实现分页查询及其相关原理
  • S4 HANA明确税金本币和外币之间转换汇率确定(OBC8)
  • FAST-DDS and ROS2 RQT connect
  • js小游戏---2048(附源代码)
  • vue3中customRef的用法以及使用场景
  • 网络技术基础
  • “北京地铁系统中人脸识别技术的安全与效率问题研究”
  • 五、工程化开发和脚手架Vue CLI
  • 网易易盾携手雷斧科技,打造公平竞技环境
  • OpenCV绘图函数(1)绘制带箭头的直线函数arrowedLine()的使用
  • mysql 一主一从数据库的配置文件
  • springboot+vue+mybatis计算机房屋服务平台+PPT+论文+讲解+售后
  • 道路监控视角人车检测数据集
  • OpenAI Whisper API (InvalidRequestError)
  • iPhone备忘录不小心删除了怎么办?
  • 深度学习100问16:sigmoid函数是什么
  • python源码 PBOCMaster MAC的计算函数及计算过程 2des
  • 数据结构(6.4_1)——最小生成树
  • Vue 中 Axios 配置指南
  • 使用物联网卡访问萤石云的常见问题
  • Vue——认识day06_class与style绑定
  • TESSY创建单元测试或集成测试工程
  • Spring 源码解读:手动实现自动装配与@Qualifier
  • 低代码技术助力移动端开发:简化开发流程,实现快速创新
  • 算法设计与分析:实验五 图论——桥问题