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

233. 数字 1 的个数

题目链接:233. 数字 1 的个数 - 力扣(LeetCode)

 

 

 

 

 

 

 

 

 

 

 

解析:

这道题我是用排列组合做的,可以看题目注释

    // 整体思想:// 1、从左到右,针对第k位数减一后,后边的n - k位子可以0~9排列组合// 2、先用总的排列组合 - 没有1的排列组合// 3、这总共n - k + 1位中,如果一个数有j个1,那么结果就需要多加 j - 1,因为排列组合只算了一个1// 所以需要把有多个1的情况算一下,范围一般是1 ~ n - k (如果这个第k位数减1后还大于等于1的话就是 n - k + 1)// 第k位处理完之后,接着定住第k位原来的数,然后处理k - 1位,依次到最后一位// “定住k位原来的数”这个操作要注意,如果原来是1,那么处理下面几位进行第2、3步时要加上这些1的个数class Solution {
public:int C(int a, int b) {int child = 1;for (int i = a; i > a - b; i--) {child *= i;}int father = 1;for (int i = b; i > 0; i--) {father *= i;}return child / father;}int get_extra_ones(const int& extra, const int& high, const int& pre_one_cnt) {int total = 0;// for (int j = 1; j <= extra; j++) {// 第一位不为1int has_one_cnt = C(extra, j) * pow(9, extra - j) * (high == 0 ? 1 : high);if (high > 0) {// 第一位为1has_one_cnt += C(extra, j - 1) * pow(9, extra - j + 1);}total += (j - 1 + pre_one_cnt) * has_one_cnt;}// 如果高位减一的数还大于等于1,全为1的情况,应该再加上这些if (high > 0)// 还需要加上前面几位有1的个数total += (extra + pre_one_cnt);return total;}int get_one_cnt(const string& str) {int n = str.size();int ret = 0;int pre_one_cnt = 0;for (int i = 0; i < n; i++) {if (str[i] == '0') {continue;}int high = str[i] - '0' - 1;int extra = n - i - 1;int total = pow(10, extra) * (high + 1);int no_one = pow(9, extra) * (high == 0 ? 1 : high);// 减没有1的排列组合时,要加上前面几位有1的个数total += no_one * (pre_one_cnt - 1);total += get_extra_ones(extra, high, pre_one_cnt);if (str[i] == '1') pre_one_cnt++;ret += total;}ret += pre_one_cnt;return ret;}int countDigitOne(int n) {string str = to_string(n);return get_one_cnt(str);}
};

 

http://www.rkmt.cn/news/80061.html

相关文章:

  • Autel MaxiPRO MP808TS 1-Year Update Subscription: Keep Your Diagnostic Tool Updated Effective
  • 【值得收藏】构建企业级智能体RAG系统:解决大模型五大痛点,让AI真正理解业务 - 教程
  • 基于微信小应用的茶叶茶具销售和管理系统(源码+论文+部署+安装)
  • 少儿编程哪家强?这几家机构不容错过! - 品牌测评鉴赏家
  • 孩子想学人工智能,有推荐的机构吗?2025 年权威测评与精选指南 - 品牌测评鉴赏家
  • [挑战成为CCPC传奇单挑王暨第二届CACC游记]一、我又回来了
  • 2025年少儿编程机构选课指南:从口碑到实力的全方位测评 - 品牌测评鉴赏家
  • 孩子AI梦起航:靠谱机构大揭秘 - 品牌测评鉴赏家
  • 信奥赛“取经”指南:这些宝藏辅导机构别错过! - 品牌测评鉴赏家
  • 完整教程:主动交互和情境感知,AI 硬件是脱离手机屏幕掌控的蓝海机会丨硬件和端侧模型专场@RTE2025 回顾
  • 阅读笔记五:解耦与模块化
  • simplis电源仿真(一)
  • 2025 年 SAT 辅导机构怎么选?TOP1 无老师国际领衔,三大维度精准避坑 - 品牌测评鉴赏家
  • P3385 【模板】负环 题解
  • 深入解析:PostgreSQL 向量扩展插件pgvector安装和使用
  • 2025年国内诚信的微动开关制造厂家推荐榜单,家电微动开关/鼠标微动开关/防水微动开关/微动开关/小型微动开关微动开关制造厂家哪里有 - 品牌推荐师
  • 前端半小时,上线一下午?我用这个平台工程思路统一了全栈部署
  • 编程小白必看!免费体验课大搜罗 - 品牌测评鉴赏家
  • SAT 辅导哪里好?2025 年优质机构推荐(含精准选择指南) - 品牌测评鉴赏家
  • keepalived搭建高可用
  • 2025全屋定制十大品牌哪家好?欧蒂尼硬核实力破局,领衔品质家居新革命 - 资讯焦点
  • P3275 [SCOI2011] 糖果 题解
  • 数据采集第四次作业-102302128吴建良
  • Daily Report — Day 4 (Beta)
  • 12.09
  • 完整教程:浏览器工作原理大揭秘:从输入网址到看到页面的奇妙旅程
  • 什么是API?一文让你彻底搞明白! - 智慧园区
  • 告别选择困难!SAT辅导机构大揭秘 - 品牌测评鉴赏家
  • igbt模块的栅极驱动芯片,栅极电阻计算
  • 构建高准确率、可控、符合规范的政务数据库审计和监测方案