码迷,mamicode.com
首页 > 其他好文 > 详细

可被5整除的二进制

时间:2021-01-15 11:55:58      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:++   res   输入   列表   响应   list   字符   mic   efi   

此博客链接:

可被5整除的二进制

题目链接:https://leetcode-cn.com/problems/binary-prefix-divisible-by-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] 为真。
示例 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]

题解

前言:这题我没有看出来是简单题,可能因为我进制不会转换。

思路:我认为第一步应该先把二进制能够取出来,怎样从数组中能按顺序取二进制数;

                      其次把二进制数转成十进制数;

                      最后判断转换后的十进制数是否能够被5整除。

错误尝试

我傻了,既然是字符串,转换成整数时,肯定会超出int的长度。

class Solution {
    public List<Boolean> prefixesDivBy5(int[] A) {
        String str="";
        int ten=0;
       List<Boolean>result=new ArrayList();
        for(int i=0;i<A.length;i++)
        {
            str+=String.valueOf(A[i]);
            ten=Integer.parseInt(str,2);
            if(ten%5==0)
                result.add(true);
            else
                result.add(false);
        }
        return result;
    }
}

  技术图片

 

 

代码

由于二进制转换成十进制会越界,那么不能利用java自带的二进制换是十进制的函数,这里利用二进制转十进制的公式,二进制数的每一位*2转换成响应的十进制,为了防止数字溢出,在每次转成十进制后都对5取余,而不是总后的结果对5取余,这里我不知道怎么证明,但是对于这种判断能不能整除的数,在每次求数时就对某个数取余和最后对某个数取余结果是一样的。

class Solution {
    public List<Boolean> prefixesDivBy5(int[] A) {
       
        Integer ten=0;
       List<Boolean>result=new ArrayList();
        for(int i=0;i<A.length;i++)
        {
            ten=(ten*2+A[i])%5;
            if(ten==0)
                result.add(true);
            else
                result.add(false);
        }
        return result;
    }
}

 

结果

技术图片

 

可被5整除的二进制

标签:++   res   输入   列表   响应   list   字符   mic   efi   

原文地址:https://www.cnblogs.com/ping2yingshi/p/14278315.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!