可被5整除的二进制前缀(java实现)
力扣 1018. 可被 5 整除的二进制前缀
题目说明
给定由若干 0 和 1 组成的数组 A。我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。
返回布尔值列表 answer,只有当 N_i 可以被 5 整除时,答案 answer[i] 为 true,否则为 false。
1 <= A.length <= 30000A[i]为0或1
示例
例1
1 | 输入:[0,1,1] |
例2
1 | 输入:[1,1,1] |
例3
1 | 输入:[1,1,1,0,1] |
笔者理解
此题是一道位运算判定算法问题,在力扣题库中被定义为简单题。
解法
当笔者阅读完此题后,发现此题就是在计算各位置二进制累积所得数的个位数对5取余是否等于0,所以我们只需要保存每次计算完的个位数即可,就让我们看看位运算以及具体如何实现吧。
实现
1 | public List<Boolean> prefixesDivBy5(int[] A) { |
时间和空间效率都较高,可见此解法比较适合此题;
总结
本题是今天的每日一题,难度达到了简单,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!








