数字 1 出现的个数

ops/2024/12/22 2:34:22/

给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。

示例 1:

输入:n = 13
输出:6

示例 2:

输入:n = 0
输出:0

提示:

  • 0 <= n <= 109
class Solution {
public:int countDigitOne(int n) {int count = 0;long long factor = 1;  // 用于表示 10^x,从个位开始逐位分析while (n / factor > 0) {long long lower = n % factor;  // 低位long long current = (n / factor) % 10;  // 当前位long long higher = n / (factor * 10);  // 高位if (current == 0) {count += higher * factor;} else if (current == 1) {count += higher * factor + lower + 1;} else {count += (higher + 1) * factor;}factor *= 10;}return count;
}};

 找规律:

  •  current == 0:当前位为 0 时,1 出现的次数为 higher * factor。factor表示一个 10 的幂次。举例:对于10的个位数上可能出现的只有1一种,对于100的十位数上可能出现的有10到19共10种

  •  current > 1:当前位大于 1 时,1 在这一位上出现的次数为 (higher + 1) * factor。例如:12的个位数有1的有1,11两种;120的十位数上有1的有10到19和110到119共20种

  •  current == 1:当前位是 1 的次数除了与高位相关,还与低位相关。当前位等于 1 时,1 出现的次数为 higher * factor + (lower + 1)。例如2143的百位数有1的情况相当于2100的情况加上所有低位上的组合( 2100, 2101, ..., 2143,从0到43共44种).


http://www.ppmy.cn/ops/121204.html

相关文章

【计算机网络】详解UDP协议格式特点缓冲区

一、UDP 协议端格式 16 位 UDP 长度, 表示整个数据报(UDP 首部UDP 数据)的最大长度&#xff1b;如果16位UDP检验和出错&#xff0c;报文会被直接丢弃。 1.1、检验和出错的几种常见情况 数据传输过程中的比特翻转&#xff1a;在数据传输过程中&#xff0c;由于物理介质或网络设…

论文阅读(十一):CBAM: Convolutional Block Attention Module

文章目录 IntroductionConvolutional Block Attention ModuleExperimentsConclusion 论文题目&#xff1a;CBAM: Convolutional Block Attention Module&#xff08;CBAM&#xff1a;卷积注意力机制&#xff09;   论文链接&#xff1a;点击跳转   代码链接&#xff1a;Git…

Python与MongoDB交互

一、基本概念 MongoDB: 一个面向文档的数据库系统&#xff0c;使用BSON&#xff08;Binary JSON&#xff09;作为存储格式。集合&#xff08;Collection&#xff09;: 类似于关系型数据库中的表&#xff0c;是文档的集合。文档&#xff08;Document&#xff09;: MongoDB中的基…

WSL (Linux)配置 Rust 开发调试环境

WSL &#xff08;Linux&#xff09;配置 Rust 开发调试环境 安装 Rust&#xff1a;安装 Rust 环境 - Rust语言圣经(Rust Course) 除了执行以上步骤&#xff0c;还得安装编译工具&#xff1a; sudo apt-get update sudo apt-get install build-essential配置 VSCode&#xff1a;…

LeetCode 152. 乘积最大子数组

LeetCode 152. 乘积最大子数组 给你一个整数数组 nums &#xff0c;请你找出数组中乘积最大的非空连续 子数组&#xff08;该子数组中至少包含一个数字&#xff09;&#xff0c;并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 示例 1: 输入: nums [2,3,-2,4…

VSCode rust文件中的api点击无法跳转问题

如果配置了vscode的setting.json windows端的话 "settings": { "typescript.tsc.autoDetect": "off","rust-analyzer.linkedProjects": [".\\gui-btn\\Cargo.toml",".\\temp\\Cargo.toml", ],其他端类似 能不…

从0学习React(1)

上次在写关于index.tsx的解析的文章的时候&#xff0c;写着写着我突然发现文章太长了&#xff0c;以至于我把代码的很多细节都给忽略掉&#xff0c;只把index.tsx文件的大致结构给写了出来。所以接下来的几篇文章&#xff0c;我将会把index.tsx分成很多个部分&#xff0c;我争取…

CSS列表

在网页中很多地方都会用到列表&#xff0c;例如导航菜单、新闻列表、商品分类等等。您除了可以使用 HTML 中的一些属性来对列表进行简单的设置外&#xff0c;在 CSS 中也提供了几种专门用来设置和格式化列表的属性&#xff0c;如下所示&#xff1a; list-style-type&#xff1…