【刷题日记】357. 统计各位数字都不同的数字个数

简介: 本次刷题日记的第 30 篇,力扣题为:357. 统计各位数字都不同的数字个数 ,中等

【刷题日记】357. 统计各位数字都不同的数字个数

本次刷题日记的第 30 篇,力扣题为:357. 统计各位数字都不同的数字个数中等

一、题目描述:

image.png

兄弟们,今天查漏洞有点晚,回来继续刷题,还好早上看过这道题,已经有了一定的思路,现在就来瞅瞅吧


二、这道题考察了什么思想?你的思路是什么?

这道题题目信息比较明确,内容也比较少,就是题目给出一个具体的范围,左闭右开区间,找出该范围中每个位上数字不同数字的种类和

这个数字的范围最大是 10 的 8 次方,也就是 1 后面有 8 个 0

题目明确,乍一看,好像思路不太明确哈,一时间可能还拿不住


没事,我们可以来推理一下,就明白了,这个其实是一个数学题,还记得咱们在高中还是初中的时候,就解过这样的数学题

image.png

那么我们同理就可以得出

n = 3  的时候,3 位数的时候,符合条件的就有 9*9*8  =  648 种 种,再加上前面的 91 种,那么就是 739 种

image.png

这样子,我们可以可以明白,其实这就是一个数学题,一个排列组合的题目

这下子这个数学题就可以接出来了吧,接下来我们就可以按照思路来翻译代码了

三、编码

根据上述逻辑和分析,我们就可以翻译成如下代码,这里需要注意我们要清楚,对于多位的时候,需要注意每一个位上面可以出现不同数字的种数

编码如下:

func countNumbersWithUniqueDigits(n int) int {
    if n == 0 {
        return 1
    }
    if n == 1 {
        return 10
    }
    // 初始化好当 n等于 1 的时候,结果是 10中,并且当前的 1 位数的时候,符合条件的种数是 9,因为 0-9 中,第 1 位 不能是 0 开头
    res, cur := 10, 9
    for i := 0; i < n-1; i++ {
        // 第 1 位数,有 9 种,第 2 位有 9 种, 第 3 位 有 8 种,以此类推
        cur *= 9 - i
        res += cur
    }
    return res
}

四、总结:

这题代码量比较少,时间复杂度咱们不难看出,就是 O(n) ,循环的次数是 n-1 次,此处的空间复杂度是 O(1) ,我们引入的是常数级别的空间消耗

原题地址:357. 统计各位数字都不同的数字个数

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~



相关文章
|
并行计算 Go 调度
Goroutine调度机制深度探究
【2月更文挑战第17天】Goroutine作为Go语言轻量级的并发执行体,其高效的调度机制是Go语言并发性能卓越的关键。本文将深入探究Goroutine的调度原理、调度器的实现以及调度过程中的优化策略,帮助读者全面了解Goroutine调度机制的内部工作机理,从而更好地利用Go语言的并发特性。
|
存储 设计模式 Cloud Native
C++QT SqlLite数据库简单使用
C++QT SqlLite数据库简单使用
|
存储 消息中间件 网络协议
零拷贝技术在Java中为何这么牛?
零拷贝技术在Java中为何这么牛?
552 0
|
关系型数据库 MySQL 数据库连接
修改nacos数据库,并制作镜像
修改nacos数据库,并制作镜像
1243 0
修改nacos数据库,并制作镜像
|
数据安全/隐私保护
|
Oracle Java 关系型数据库
实时计算 Flink版操作报错合集之本地打成jar包,运行报错,idea运行不报错,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
222 6
|
11月前
|
存储 消息中间件 缓存
Redis 简介
10月更文挑战第14天
276 58
|
10月前
|
Linux 数据安全/隐私保护
linux权限管理
本文介绍了Linux系统中的权限管理,包括权限的概念、用户和用户组与权限的关系、文件权限位的说明以及rwx权限的具体含义。同时,详细讲解了如何使用`chmod`和`chown`命令更改文件和目录的权限,并通过多个实验演示了不同权限组合对文件和目录的实际影响。最后,总结了文件和目录权限的一些重要知识点,帮助读者更好地理解和应用Linux权限管理。
377 1
linux权限管理
|
机器学习/深度学习 数据挖掘
机器学习之聚类——模糊聚类FCM
机器学习之聚类——模糊聚类FCM
386 4
|
JSON 前端开发 JavaScript
总结 Vue3 的一些知识点:Vue3 Ajax(axios)
总结 Vue3 的一些知识点:Vue3 Ajax(axios)