Leetcode 1029. 可被 5 整除的二进制前缀

1029. 可被 5 整除的二进制前缀

显示英文描述

我的提交返回竞赛

  • 用户通过次数467
  • 用户尝试次数662
  • 通过次数477
  • 提交次数1964
  • 题目难度Easy

给定由若干 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. 1 <= A.length <= 30000
  2. A[i] 为 0 或 1
class Solution {
public:
    vector<bool> prefixesDivBy5(vector<int>& A) {
        vector<bool> res;
        long long num = 0;
        for(int i=0;i < A.size();i++){
            num = ((num << 1)|A[i])%5;
            // cout << num << " ";
            if(num%5 == 0) res.push_back(true);
            else res.push_back(false);
        }
        return res;
    }
};

看到长度3000就想到数据长度应该会超,事实证明确实,只要每次取个膜就好了。

原文地址:https://www.cnblogs.com/cunyusup/p/10633986.html

时间: 2024-10-25 05:53:13

Leetcode 1029. 可被 5 整除的二进制前缀的相关文章

1018.可被 5 整除的二进制前缀

能不能被5整除都看 看输入数字的最后一位是否为 0或者5 也就是最后一位是否能被整除 这道题很容易就溢出 所以我们仅包括最后几位即可 class Solution { public List<Boolean> prefixesDivBy5(int[] A) { List<Boolean> ans = new ArrayList<Boolean>(); int temp = 0 ; for(int i = 0 ; i < A.length ;i++) { temp

可被 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] 为真.示例

Leetcode-1029 Binary Prefix Divisible By 5(可被 5 整除的二进制前缀)

1 class Solution 2 { 3 public: 4 vector<bool> prefixesDivBy5(vector<int>& A) 5 { 6 vector<bool> v(A.size()); 7 int rnt = 0; 8 for(int i = 0; i< A.size();i ++) 9 { 10 if(A[i]==1) 11 { 12 if(rnt==0) 13 {rnt = 1;v[i] = false;} 14 els

【leetcode 简单】第十六题 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" class Solution: def addBinary(self, a, b): """ :

Leetcode 1022. 可被 K 整除的最小整数

1022. 可被 K 整除的最小整数 显示英文描述 我的提交返回竞赛 用户通过次数74 用户尝试次数262 通过次数75 提交次数1115 题目难度Medium 给定正整数 K,你需要找出可以被 K 整除的.仅包含数字 1 的最小正整数 N. 返回 N 的长度.如果不存在这样的 N,就返回 -1. 示例 1: 输入:1 输出:1 解释:最小的答案是 N = 1,其长度为 1. 示例 2: 输入:2 输出:-1 解释:不存在可被 2 整除的正整数 N . 示例 3: 输入:3 输出:3 解释:最小

Leetcode 1262. 可被三整除的最大和

题目:给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和. 示例 1: 输入:nums = [3,6,5,1,8] 输出:18 解释:选出数字 3, 6, 1 和 8,它们的和是 18(可被 3 整除的最大和). 这道题是第163周竞赛的一道题目,难度中等,边学别人的解题方法,边记录吧! 方案一.不妨设dp[i] 代表 选取的数字累加和 模3 = i 的数字和 假定nums[i] % 3 = 1 ,那么,和 前面选取的数字和模 3 = 2 的数相加,就可以模3为 0 ,表达起来就是

LeetCode 1029. Two City Scheduling

原题链接在这里:https://leetcode.com/problems/two-city-scheduling/ 题目: There are 2N people a company is planning to interview. The cost of flying the i-th person to city A is costs[i][0], and the cost of flying the i-th person to city B is costs[i][1]. Retur

[LeetCode] Self Dividing Numbers 自整除数字

A self-dividing number is a number that is divisible by every digit it contains. For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0. Also, a self-dividing number is not allowed to contain the digit zero. G

[LeetCode]560. 和为K的子数组(前缀和)

题目 给定一个整数数组和一个整数?k,你需要找到该数组中和为?k?的连续的子数组的个数. 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况. 说明 : 数组的长度为 [1, 20,000]. 数组中元素的范围是 [-1000, 1000] ,且整数?k?的范围是?[-1e7, 1e7]. 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subarray-sum-eq