233. Number of Digit One

本文介绍了一种高效算法,用于计算非负整数中特定数字(如1)的出现次数。通过遍历不同数量级,该算法能够在较短时间内得出准确结果。例如,输入13时,将返回6,因为1在1、10、11、12、13这些数中共出现了6次。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hard

Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.

Example:

Input: 13
Output: 6 
Explanation: Digit 1 occurred in the following numbers: 1, 10, 11, 12, 13.

转:https://www.cnblogs.com/xuanxufeng/p/6854105.html

 

class Solution {
    public int countDigitOne(int n) {
        int count = 0;
        for(long m=1;m<=n;m*=10){
            count += (n/m+8)/10*m + ((n/m%10==1)?n%m+1:0);
        }
        return count;
    }
}

 

这段代码的主要功能是生成一个数字图像的热力图(heatmap),并对像素值进行归一化处理。下面是逐行解析: --- ### 详细解读 #### 函数定义 ```python def get_heatmap(digit): ``` - 定义了一个名为 `get_heatmap` 的函数,接收单个参数 `digit`,它应该是某个数字化后的图像数据。 --- #### 注释部分 ```plaintext """Computes the heatmap of the out of the digit.""" ``` - 这段注释说明了函数的目的:计算输入数字的热力图。 --- #### 绝对值与重塑操作 ```python digit = np.abs(np.reshape(digit, newshape=(28, 28))) ``` - 首先通过 `np.abs()` 对 `digit` 中的所有元素取绝对值。 - 接着使用 `np.reshape()` 将其从一维向量转换成 `(28, 28)` 形状的二维矩阵,这通常是为了适配 MNIST 数据集中手写数字图片的标准尺寸(28x28 像素)。 --- #### 归一化处理 ```python return (digit - np.min(digit)) / (np.max(digit) - np.min(digit)) ``` - **`(digit - np.min(digit))`** 表示将所有像素值减去最小值。 - **`(np.max(digit) - np.min(digit))`** 表示求最大值与最小值之差(范围跨度)。 - 整体公式实现了线性映射变换,使得新的像素值落在 `[0, 1]` 区间内,这就是所谓的“归一化”过程。 --- ### 功能总结 这个函数的作用可以分为两步: 1. 将输入的一维向量恢复为标准的手写数字图像(如 MNIST 格式下的 28x28 矩阵)。 2. 对恢复后的图像进行归一化处理,使其数值分布在 [0, 1] 之间,便于可视化或进一步分析。 这种技术常见于深度学习领域,尤其是用于展示卷积神经网络中间层激活情况的热力图。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值