位1的个数
发表于|更新于|作业练习
|浏览量:
位1的个数
问题描述(来源于LeetCode)
给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。
代码实现
1 | class Solution: |
复杂度分析
- 时间复杂度O(log(n))
- 空间复杂度O(1)
文章作者: zhaoyuan
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 笺札!
相关推荐

2026-10-12
1141. 查询近30天活跃用户数
1141. 查询近30天活跃用户数 难度:简单 | 题号:1141 | 链接:1141. 查询近30天活跃用户数 - 力扣(LeetCode) | 数据结构:SQL 关联:订单最多的用户(同为「按维度分组计数」)· 每月交易 I(同为日期函数 + 分组聚合)· 可对照 SQL原理_02(日期函数 / 分组聚合)。 🎯 问题描述 描述:写一条 SQL 查询,求出截至 2019-07-27(含)的近 30 天内,每天的活跃用户数。活跃用户指当天至少进行一次活动的用户,返回结果表的列名须为 day 和 active_users,且每天都可能出现重复用户(同一用户一天多次活动只算一次)。 表:Activity 1234567891011+---------------+---------+| Column Name | Type |+---------------+---------+| user_id | int || session_id | int || activity_date | date || activity_t...

2026-10-12
1193. 每月交易 I
1193. 每月交易 I 难度:中等 | 题号:1193 | 链接:1193. 每月交易 I - 力扣(LeetCode) | 数据结构:SQL 关联:查询近30天活跃用户数(同为日期函数 + 分组聚合)· 订单最多的用户(分组计数)· 可对照 SQL原理_02(日期格式化 / 条件聚合)。 🎯 问题描述 描述:写一条 SQL 查询,找出每个月、每个国家/地区的:① 交易总数;② 交易总金额;③ 已批准(state = 'approved')的交易数;④ 已批准交易的总额。结果以任意顺序返回。 表:Transactions 123456789101112+---------------+---------+| Column Name | Type |+---------------+---------+| id | int || country | varchar || state | enum || amount | int || trans_date | date ...

2026-10-12
1341. 电影评分
1341. 电影评分 难度:中等 | 题号:1341 | 链接:1341. 电影评分 - 力扣(LeetCode) | 数据结构:SQL 关联:订单最多的用户(同为「分组计数取 Top-1」)· 分数排名(同为「排名 / 并列处理」)· 部门工资最高的员工(分组最值)· 可对照 SQL原理_02(多表连接 / 排序 / UNION ALL)。 🎯 问题描述 描述:写一个解决方案,同时完成两件事: 找出评论电影数量最多的用户名。若并列,返回字典序较小的用户名。 找出 2020 年 2 月里平均评分最高的电影名称。若并列,返回字典序较小的电影名称。 返回结果表的列名为 results。 表:Movies / 表:Users / 表:MovieRating 12345678910+---------------+---------+ +---------------+---------+ +---------------+---------+| Column Name | Type | | Column Name | Type ...

2026-10-12
596. 超过5名学生的课
596. 超过5名学生的课 难度:简单 | 题号:596 | 链接:596. 超过 5 名学生的课 - 力扣(LeetCode) | 数据结构:SQL 关联:订单最多的用户(同为「分组计数 + 过滤」)· 查询近30天活跃用户数(分组去重计数)· 可对照 SQL原理_02(GROUP BY / HAVING / WHERE 与 HAVING 的区别)。 🎯 问题描述 描述:查询至少有 5 名学生的所有课程(班级)。结果以任意顺序返回。 表:Courses 12345678+-------------+---------+| Column Name | Type |+-------------+---------+| student | varchar || class | varchar |+-------------+---------+(student, class) 是该表的联合主键(不同值的列的组合)。该表的每一行表示学生的名字和他们注册的课程。 示例 1: 123456789101112131415161718192021222324...

2026-10-12
586. 订单最多的用户
586. 订单最多的用户 难度:简单 | 题号:586 | 链接:586. 订单最多的客户 - 力扣(LeetCode) | 数据结构:SQL 关联:从不订购的用户(同用 Orders 表,一文求"从未下单",一文求"下单最多")· 分数排名(同为「分组计数 + 排名」题)· 可对照 SQL原理_03(CTE 写法)与 SQL原理_02(窗口函数)。 🎯 问题描述 描述:查找订单数量最多的客户的 customer_number。测试用例保证订单最多的客户只有一个。 表:Orders 12345678+-----------------+----------+| Column Name | Type |+-----------------+----------+| order_number | int || customer_number | int |+-----------------+----------+order_number 是该表的主键(具有唯一值的列)。该表包含订单 ID 与...

2026-04-17
132模式-LeetCode
456. 132 模式 🎯 问题描述 描述: 给你一个整数数组 nums,数组中共有 n 个整数。 132 模式的子序列由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足: i < j < k nums[i] < nums[k] < nums[j] 如果 nums 中存在 132 模式的子序列,返回 true;否则,返回 false。 说明: 这是一个枚举中间最大值结合有序集合维护后缀的问题。 核心策略: 我们要找 nums[i]<nums[k]<nums[j]nums[i] < nums[k] < nums[j]nums[i]<nums[k]<nums[j]。 我们可以枚举中间的元素 nums[j] 作为“3”(最大值)。 左侧 (1):为了让 nums[i]<nums[k]nums[i] < nums[k]nums[i]<nums[k] 更容易满足,对于固定的 j,我们需要知道 j 左侧的最小值 min_left。 右侧 (2):我们需要在 j 的右侧找到...
公告
This is my Blog
