萌新练习写代码的每日一练:可被 5 整除的二进制前缀
给定由若干 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] 为真。
思路:运用我学长的一句圣经“万物皆可数学”,先定义一个数now = 0,之后对now进行左移操作并加上当前列表中的值,然后对5进行取余操作判断即可。
代码:
class Solution:def prefixesDivBy5(self, A: List[int]) -> List[bool]:res = []now = 0for i in A:now = (now << 1) + ires.append(not now % 5)return res
但是这样会出现一个问题,假如列表A的长度过大,比如len(A) = 30000,在这么操作的话会出现溢出的情况,ll都救不回来的那种(误
因此需要进行优化,这时候利用一个公式
m≡n(mod 5) 则ma≡na(mod 5)
就可以进行分布操作,每次移位操作之后直接对5取余,是和最终结果对5取余的效果是一样的,而且每次mod5之后的结果只可能是0、1、2、3、4,利用上一步的结果做后续运算,省时省力,不会溢出。
代码如下:
class Solution:def prefixesDivBy5(self, A: List[int]) -> List[bool]:res = []now = 0for i in A:now = ((now << 1) + i) % 5res.append(not now)return res
不得不说数学真好玩(考试的时候除外
题目来自LeetCode第1018题
萌新练习写代码的每日一练:可被 5 整除的二进制前缀相关推荐
- 写代码日常 | 每日趣闻
戳一戳小程序查看更多! 往 期 趣 闻 ☞初级开发者vs高级开发者 | 每日趣闻 ☞程序猿真成猴了?| 每日趣闻 ☞技术面试 vs 实际岗位 | 每日趣闻 ☞如果计算机语言是中国人发明的 | 每日趣闻 ...
- 老手萌新学习composer的使用
为什么说是老手萌新? 写代码好多年了,所以是老手,然而一直未用过composer,所以是萌新(而且接触过N次就是没看懂到底啥是composer,很囧) ------------------------ ...
- 萌新程序员找工作该怎么写简历?
金三银四招聘季,萌新怎么写简历? 作者 | Elaine Bennett 译者 | 弯月,责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 以下为译 ...
- CTFshow_萌新(隐写)
CTFshow_萌新(隐写) 1.隐写1 题目 使用winhex软件打开图片,发现文件头错误,将99改为89再打开图片即可 2.隐写2 题目 使用JPHS工具打开图片,点击Seek->密码为空, ...
- ctfshow 做题 萌新 模块(3)
ctfshow 做题 萌新 模块(3) -- 萌新 隐写5 下载的附件 txt 文本是这样的. 文本中有一串不明文字: 䴀娀圀䜀䌀娀娀䤀一䈀儀圀㘀堀㌀䬀一䘀㈀嘀㘀夀吀嘀䰀㔀㐀圀㘀㌀吀䠀䰀㔀刀䐀䜀䴀匀㜀 ...
- 萌新学习C++容易漏掉的知识点,看看你中招了没有(一)
2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票! 我的投票地址:点击为我投票 文章目录 一. 前言 二.进入正题 1. float和double 2. for循环 3. 逗号运算符 ...
- 爬虫初学(一):爬取笔趣阁小说(萌新用-详细讲解)
不识有话说 作为一个爬虫萌新,第一个小项目当然是爬一爬我们的萌新之友-<新笔趣阁> 虽然没什么难度, 不过还是分享一下自己的代码历程, 希望能给予大家一些思路或帮助, 当然,如果有大佬能够 ...
- ctfshow 做题 萌新 模块(1)
ctfshow 做题 萌新 模块(1) -- 萌新认证 加 qq 群发"萌新码"得到萌新快乐码. -- -- 萌新_密码1 可以猜测出,显示的是一串 16 进制码. 把 16 进制 ...
- ctfshow_萌新_萌新隐藏题
https://harvey-blog.com/Safety/525 0x01 萌新认证 加群召唤flag 0x02 萌新_密码 萌新不会 53316C6B5A6A42684D3256695A4456 ...
最新文章
- Silverlight 游戏开发小技巧:动感小菜单2
- 无线网络会杀死固网? 不可能的事情
- python myqr 二维码生成
- MIT自然语言处理第五讲:最大熵和对数线性模型
- url地址传参中文乱码处理
- 笨办法学 Linux 0~3
- python中io中的+模式_Python的高级特性,模块和IO操作
- oracle+日誌語句,oracle维护常用sql语句
- PHP报错:Invalid body indentation level (expecting an indentation level of at least 4)
- 复原 IP 地址(回溯)
- python计算最大值最小值_python怎么求最大值最小值
- ps怎么做油漆喷溅画效果
- 别人教我学计算机的作文,我教舅妈学电脑优秀作文.doc
- echart 三维可视化地图_实测三个工具后,我终于找到了地图可视化的神器
- 【算法学习】四 二分法查找(折半法或者折半查找)
- FPV救援四足机器人设计(1)
- 互联网晚报 | 10月7日 星期四 | 小米中东欧5G手机市占率排名第一;威马汽车将再获5亿美元融资;诺基亚首款平板T20发布...
- 九龙证券|动力锂离子电池的能量密度可达多少?
- uva11538(组合数学)象棋中的皇后
- 什么是SSL证书?SSL证书的原理和作用是什么?
热门文章
- 计算机按键音乐乐谱泡沫,邓紫棋经典歌曲《泡沫》简谱
- 【运维心得】server2012R2启动后任务栏卡死的终极解决
- 计算机网络实验一——Cisco Packet Tracer网络仿真软件安装及使用
- 怎样实现微信打开网址后自动调用手机自带默认浏览器或提示选择浏览器,微信跳转手机浏览器打开指定页面
- 工商银行卡网上查询开户行
- c++vector使用方法详解
- 【编程实践】代码之中有创意:“我一直认为工程师世界上最具创造性的工作之一”
- 项目前的一篇战地日记-菜鸟和大神的区别
- k8s中kubectl陈述式/声明式资源管理
- 数据处理 —— 差分