【刷题日记】762. 二进制表示中质数个计算置位

简介: 本次刷题日记的第 25 篇,力扣题为:762. 二进制表示中质数个计算置位 ,简单

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

【刷题日记】762. 二进制表示中质数个计算置位

本次刷题日记的第 25 篇,力扣题为:762. 二进制表示中质数个计算置位简单

一、题目描述:

image.png

清明小长假第 3 天,回到深圳后稍加调整,看看今天 leetcode 是个啥题?还是要保持习惯,每天总要花点时间做点自己想做的事情


仔细看一下是个简单题,今晚应该可以早点睡觉了

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

我们还是要认真细致的来查看一下该题本身给我们传达的信息:

  • 题中会给出一个区间,区间内的数据都是整数,我们需要计算出这个区间内的每一个数字的二进制数中 1 的个数
  • 我们需要知道如何去校验一个数是否是质数
  • 完成上述 2 步之后,我们就可以使用傻瓜式的遍历方式来实现本题了

计算一个数的二进制数包含多少个 1 ,我们可以使用辗转相除法来进行处理,当然,我们也可以使用库函数来进行处理,此处我们使用的是 golang ,那么我们直接使用库函数计算的话,可以这样来使用 : bits.OnesCount(具体的 uint 数字)

那么问题就来到了什么是质数了?

如果一个数 大于 1 的数字,并且这个数字只能被 1 和 自身整除,不能被其他任何数字整除,那么这个数字就是 质数

关于如何校验一个数是质数,我们在大学学习 C 语言的时候,就学习并且实践过,在这里咱不再赘述了


三、编码

根据上述逻辑和分析,我们就可以翻译成如下代码

编码如下:

func countPrimeSetBits(left int, right int) (res int) {
  // 直接傻瓜式的遍历
    for i:=left;i<=right;i++ {
        // golang 中 使用 bits.OnesCount() 来计算 uint 数中 1 个个数
        if isPrimeNum(bits.OnesCount(uint(i))){
            res++
        }
    }
    return
}
// 校验是否是质数
func isPrimeNum(num int) bool {
    if num < 2 {
        return false
    }
    for i:=2; i*i <= num; i++ {
        if num %i == 0 {
            return false
        }
    }
    return true
}

看了这个题的编码其实也非常的常规

  • 第一步 遍历题目给出的数组
  • 第二步 计算具体数字的二进制数中的 1 的个数
  • 校验传入的数据是否是质数

四、总结:

那么,对于这个题,他的空间复杂度很明显,是 O(1) ,因为我们只引入了常数级别的空间消耗

那么他的时间复杂度是多少呢? xdm 你们有一个清晰的概念吗 ,感兴趣的可以尝试计算一下他的时间复杂度,暂时先不明确的写出来了

原题地址:762. 二进制表示中质数个计算置位

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

欢迎点赞,关注,收藏

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

image.png

好了,本次就到这里

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

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


相关文章
【数字IC手撕代码】Verilog小数分频|题目|原理|设计|仿真
【数字IC手撕代码】Verilog小数分频|题目|原理|设计|仿真
【数字IC手撕代码】Verilog小数分频|题目|原理|设计|仿真
|
11月前
|
存储 索引
让星星⭐月亮告诉你,HashMap在put数据时是如何找到要存放的位置的?
HashMap 是一种常用的键值对存储结构,其底层采用数组+链表+红黑树实现。本文探讨了 HashMap 在插入键值对时如何确定存放位置。通过分析 `put` 方法的源代码,重点解析了哈希码的计算过程和数组索引的确定方法。哈希码通过 `hashCode()` 方法和位运算优化,确保均匀分布,从而减少哈希碰撞,提高性能。最终,通过 `(n-1) & hash` 计算出数组索引,确保键值对被正确存放到指定位置。
152 2
|
安全 Java
Java线程之join方法&死锁&Timer
线程锁 锁定的是对象 1.放置在方法的结构上 public synchronized void test(){ 好多代码 执行代码 好多代码 } 对象.test(); 对象被某一个访问他的线程锁定 2.放置在方法(构造 块)的内部(看起来是包含着一堆代码) public void test(){ 好多代码 synchronized(对象){ 执行代码 } 好多代码 } 3.线程相关的一些方法 sleep(); run(); start(); setPriority();--------
251 0
|
1天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1069 0
|
10天前
|
人工智能 运维 安全
|
1天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
256 0
|
8天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
9天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
748 23