LeetCode 1018. 可被 5 整除的二进制前缀
发布日期:2021-07-01 03:24:32
浏览次数:3
分类:技术文章
本文共 1262 字,大约阅读时间需要 4 分钟。
1. 题目
给定由若干 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 <= 30000A[i] 为 0 或 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-prefix-divisible-by-5 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
余数定理
(a+b)%q = (a % q + b % q) % q
(a*b)%p = (a % p * b % p) % p
class Solution { public: vectorprefixesDivBy5(vector & A) { int sum = 0; vector ans(A.size()); for(int i = 0; i < A.size(); ++i) { sum = sum*2+A[i]; ans[i] = (sum%5 == 0); sum %= 5;//防止溢出 } return ans; }};
class Solution { public: vectorprefixesDivBy5(vector & A) { int sum = 0; vector ans(A.size()); for(int i = 0; i < A.size(); ++i) { sum = ((sum<<1)+A[i])%5; ans[i] = (sum == 0); } return ans; }};
转载地址:https://michael.blog.csdn.net/article/details/105799833 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月18日 02时01分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
33 Qt 之绘图之绘制卡通蚂蚁
2019-05-02
34 Qt 之绘图之绘制时钟
2019-05-02
35 Qt 之绘制闪烁文本
2019-05-02
QT知识点总结(一)
2019-05-02
QT知识点总结(二)
2019-05-02
QT知识点总结(三)
2019-05-02
一劳永逸的解除ByondCompare4注册问题
2019-05-02
Unix环境变量--文件操作
2019-05-02
Unix环境变量--进程管理
2019-05-02
Unix环境变量--信号(一)
2019-05-02
Unix环境变量--线程基础
2019-05-02
Unix环境变量--缓冲区
2019-05-02
Unix环境变量--堆和栈的区别
2019-05-02
Unix环境变量--POSIX异步I/O
2019-05-02
UNIX环境变量--读写函数变体
2019-05-02
UNIX环境变量--存储映射I/O
2019-05-02
UNIX环境变量--IPC之管道通信
2019-05-02
C++虚继承【详解】
2019-05-02
tinyhttpd源码学习1
2019-05-02
Plus One
2019-05-02