LeetCode算法题解 1018-可被 5 整除的二进制前缀

题目描述

题解

刚开始我是直接枚举所有的二进制前缀,转换成十进制数来判断是否能被5整除,但是可能是因为精度,有的点过不了,我就看了别人的方法:
一个数能否被5整除,要看转换成十进制的个位数,如果是0或者是5,就可以被5整除

代码:

class Solution {
public:
    vector<bool> prefixesDivBy5(vector<int>& A) {
        vector <bool> res;
        int currentRear = 0;// 当前十进制数的个位数
        for(int i = 0; i < (int)A.size(); i++)
        {
            currentRear = (currentRear * 2 + A[i]) % 10;//( 前一个数左移一位(也就是乘2) + 个位数 ) % 10 ==》当前数的个位数
            if(currentRear == 0 || currentRear == 5)
            {
                res.push_back(true);
            }
            else
            {
                res.push_back(false);
            }
        }
        return res;
    }
};










发布了197 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41708792/article/details/104434938