尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

233. 数字 1 的个数

233. 数字 1 的个数
📅 发布时间:2026/6/20 10:49:33

题目链接: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);}
};

 

自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。

相关新闻

  • Autel MaxiPRO MP808TS 1-Year Update Subscription: Keep Your Diagnostic Tool Updated Effective
  • 【值得收藏】构建企业级智能体RAG系统:解决大模型五大痛点,让AI真正理解业务 - 教程
  • 基于微信小应用的茶叶茶具销售和管理系统(源码+论文+部署+安装)

最新新闻

  • 扬州市黄金回收实体店怎么选?这份清单帮你货比三家 - 三大殿
  • 2026三亚婚纱照旺季攻略:TOP10+避坑指南 - charlieruizvin
  • 贺州市闲置黄金变现多少钱?本地5家回收门店最新报价参考 - 凯撒是大帝
  • 保山市2026年黄金回收报价,内行人整理实体门店回收清单 - 三大殿
  • 2026 中国 GEO 优化服务商实力榜单:技术、案例、性价比全维度评测 - 速递信息
  • 代码转图不求人!ChatGPT 和 Gemini 代码怎么转换为图片,AI 导出鸭轻松搞定

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号