专栏首页python-爬虫力扣题目汇总(二进制表示中质素个数,分糖果,有序数组平方)

力扣题目汇总(二进制表示中质素个数,分糖果,有序数组平方)

二进制表示中质数个计算置位

1.题目描述

给定两个整数 LR ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。

(注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。)

示例 1:

输入: L = 6, R = 10
输出: 4
解释:
6 -> 110 (2 个计算置位,2 是质数)
7 -> 111 (3 个计算置位,3 是质数)
9 -> 1001 (2 个计算置位,2 是质数)
10-> 1010 (2 个计算置位,2 是质数)

示例 2:

输入: L = 10, R = 15
输出: 5
解释:
10 -> 1010 (2 个计算置位, 2 是质数)
11 -> 1011 (3 个计算置位, 3 是质数)
12 -> 1100 (2 个计算置位, 2 是质数)
13 -> 1101 (3 个计算置位, 3 是质数)
14 -> 1110 (3 个计算置位, 3 是质数)
15 -> 1111 (4 个计算置位, 4 不是质数)

注意:

  1. L, RL <= R 且在 [1, 10^6] 中的整数。
  2. R - L 的最大值为 10000。

2.解题思路

1.应为他R的范围为10的6次方,所以二进制后最大的1的个数为20,所以我们可以列出20里的质素制作出表格
one_list = [2,3,5,7,11,13,17,19],
然后就是循环了,根据1的个数来判断他是不是质素

3.解题

class Solution:
    def countPrimeSetBits(self, L: int, R: int) -> int:
        count = 0
        one_list = [2,3,5,7,11,13,17,19]
        for a in range(L,R+1):
            if bin(a).count('1') in one_list:
                count += 1
        print(count)
        return count

分糖果

1.题目描述

输入: candies = [1,1,2,2,3,3]
输出: 3
解析: 一共有三种种类的糖果,每一种都有两个。
     最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数最多。

示例 2 :

输入: candies = [1,1,2,3]
输出: 2
解析: 妹妹获得糖果[2,3],弟弟获得糖果[1,1],妹妹有两种不同的糖果,弟弟只有一种。这样使得妹妹可以获得的糖果种类数最多。

注意:

  1. 数组的长度为[2, 10,000],并且确定为偶数。
  2. 数组中数字的大小在范围[-100,000, 100,000]内。

2.解题思路

用元祖去重

3.解题

class Solution:
    def distributeCandies(self, candies: List[int]) -> int:
        candies_set = set(candies)
        if len(candies_set) >= len(candies)/2:
            return int(len(candies)/2)
        else:
            return len(candies_set)

快乐数

1题目描述

  1. 编写一个算法来判断一个数是不是“快乐数”。 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。 示例: 输入: 19 输出: true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1

2.解题思路

安装他示例,我们可以想到他解释里面的内容是
sum([int(i)**2 for i in str(n) ])
问题就在于他如果步等于1他无线循环会是什么有没有规律
class Solution:
    def isHappy(self, n: int) -> bool:
        a = True
        new_list = [4,16,37,58,89,145,42,20]
        while n != 1:
            n = sum([int(i)**2 for i in str(n) ])
            print(n)
所有我们在pycharm输入几个 n打印出n看看情况
然后我们发现无论什么数字他会进入一个循环
[4,16,37,58,89,145,42,20],
所有我们只要数到这里就停止程序即可,
class Solution:
    def isHappy(self, n: int) -> bool:
        a = True
        new_list = [4,16,37,58,89,145,42,20]
        while n != 1:
            n = sum([int(i)**2 for i in str(n) ])
            if n in new_list:
                a = False
                break
        print(a)
        return a

3.解题

class Solution:
    def isHappy(self, n: int) -> bool:
        a = True
        new_list = [4,16,37,58,89,145,42,20]
        while n != 1:
            n = sum([int(i)**2 for i in str(n) ])
            if n in new_list:
                a = False
                break
        print(a)
        return a

`有更加好的思路,或者解题方法评论区留言谢谢

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python爬虫(爬取图片)

    小小咸鱼YwY
  • python中的特殊注释#todo与#type

    小小咸鱼YwY
  • 基于TCP协议的套接字编程

    Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在S...

    小小咸鱼YwY
  • LeetCode - 数组拆分

    偷懒了几天,默默的跑去看各种小说,不想更新公众号。接下去的几天,利用休假的机会把前几天看的几本小说都写一下各自的剧情简介。

    晓痴
  • 蓝桥杯之买商品

    公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。 程...

    用户4492257
  • ThreadLocal 源码分析

    我们知道解决共享变量不安全的一种方式,就是利用每个线程的私有变量来操作,避免共享变量导致的线程不安全问题。

    itliusir
  • 算法:贪心算法与二分查找-理论与实战

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    营琪
  • python基础学习19----sock

    ip地址:InetAddress 网络中设备的标识,不易记忆,可用主机名(计算机的标识号)

    用户2398817
  • 深度学习笔记

    该数据库有:10类标签,50000个训练数据,10000个测试数据,大小均为32*32。

    魏晓蕾
  • OnGestureListener探索

    注意,没有onSingleTapUp,可见只是类似于ACTION_UP,而不等同于ACTION_UP。ACTION_UP只要抬起就会检测到,onSingl...

    刘晓杰

扫码关注云+社区

领取腾讯云代金券