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

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;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 小程序获取自定义tabbar高度踩坑
  • MARK图像处理与计算机视觉基础,经典以及最近发展
  • C++:构造函数、析构函数
  • VTK平面切割
  • Spring 框架下 Redis 数据结构的全面解析
  • 【Unity小工具】Image组件宽度、高度自适应
  • 【Google Play】X浏览器4.8.1国际版(如何鉴别是否官方?)
  • 掌握 SQL 数据操纵的基础技巧
  • 点亮ESP 32 板载LED 灯
  • Java 入门指南:Java 并发编程 —— 并发容器 PriorityBlockingQueue
  • Spark2.x 入门:逻辑回归分类器
  • 简单的Linux Ftp服务搭建
  • 通过redis-operator 来部署 Redis Cluster 集群
  • 【大数据】Canal实现MySQL数据增量同步至Kafka:原理与配置解析
  • MSSQL数据库安全配置
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • Angular6错误 Service: No provider for Renderer2
  • Java 内存分配及垃圾回收机制初探
  • JavaScript 基本功--面试宝典
  • java正则表式的使用
  • JS基础之数据类型、对象、原型、原型链、继承
  • react-native 安卓真机环境搭建
  • Redis 懒删除(lazy free)简史
  • Redux 中间件分析
  • Terraform入门 - 3. 变更基础设施
  • Vue 动态创建 component
  • 大整数乘法-表格法
  • 前嗅ForeSpider教程:创建模板
  • 使用parted解决大于2T的磁盘分区
  • 新书推荐|Windows黑客编程技术详解
  • Spring Batch JSON 支持
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (论文阅读11/100)Fast R-CNN
  • (论文阅读30/100)Convolutional Pose Machines
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • **PHP二维数组遍历时同时赋值
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net core 管理用户机密
  • .NET Core中Emit的使用
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 给NuGet包添加Readme
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET框架设计—常被忽视的C#设计技巧
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [ Linux Audio 篇 ] 音频开发入门基础知识