leetcode_1018. 可被 5 整除的二进制前缀

举报
悲恋花丶无心之人 发表于 2021/02/02 22:21:23 2021/02/02
【摘要】 目录 一、题目内容 二、解题思路 三、代码 一、题目内容 给定由若干 0 和 1 组成的数组 A。我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。 返回布尔值列表 answer,只有当&nb...

目录

一、题目内容

二、解题思路

三、代码


一、题目内容

给定由若干 0 和 1 组成的数组 A。我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。

返回布尔值列表 answer,只有当 N_i 可以被 5 整除时,答案 answer[i] 为 true,否则为 false。

示例 1:

输入:[0,1,1]
输出:[true,false,false]
解释:
输入数字为 0, 01, 011;也就是十进制中的 0, 1, 3 。只有第一个数可以被 5 整除,因此 answer[0] 为真。

示例 2:

输入:[1,1,1]
输出:[false,false,false]

示例 3:

输入:[0,1,1,1,1,1]
输出:[true,false,false,false,true,false]

示例 4:

输入:[1,1,1,0,1]
输出:[false,false,false,false,false]

 

提示:

1 <= A.length <= 30000
A[i] 为 0 或 1

二、解题思路

没啥说的,上一个数是前一个数乘以2再加上当前的数,每次判断是否被5整除即可。

三、代码


  
  1. class Solution:
  2. def prefixesDivBy5(self, A: list) -> list:
  3. res = []
  4. temp = 0
  5. for i in A:
  6. temp = ((temp << 1) + i) % 5
  7. res.append(temp == 0)
  8. return res
  9. if __name__ == '__main__':
  10. A = [0, 0, 1, 1, 1, 1]
  11. s = Solution()
  12. ans = s.prefixesDivBy5(A)
  13. print(ans)

文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。

原文链接:nickhuang1996.blog.csdn.net/article/details/112601044

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。