2827. 范围中美丽整数的数目

该篇文章介绍了一个编程问题,要求在给定范围内找到美丽整数(满足特定条件的整数),并使用暴力按位DP方法求解。代码展示了如何计算从low到high(包括边界)之间满足条件的整数数量,涉及位操作和分段判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

题意

题目链接

思路

  • 按位dp
  • 暴力

代码

// 暴力
class Solution {
public:
    int numberOfBeautifulIntegers(int low, int high, int k) {
        int l = low / k;
        int r = high / k;
        if (low % k)
            l++;
        int ans = 0;
        while (l <= r)
        {
            int tmp = l * k;
            if (10 <= tmp && tmp < 99 ||
                1000 <= tmp && tmp < 9999 ||
                1000 <= tmp && tmp < 999999 ||
                100000 <= tmp && tmp < 99999999 ||
                10000000 <= tmp && tmp < 99999999
            )
            {
                int i = 0;
                int j = 0;
                while (tmp)
                {
                    int end = tmp % 10;
                    tmp /= 10;
                    end & 1 ? i++ : j++;
                }
                if (i == j)
                    ans ++;
            }
            else if (tmp >= 99999999)
                break;
            l++;
        }
        return ans;
    }
};
``` class Solution { public long beautifulSubarrays(int[] nums) { HashMap<Integer, Integer> map = new HashMap<>(); map.put(0, 1); int sum = 0; int result = 0; for (int num : nums){ sum ^= num; if(map.containsKey(sum)){ result += map.get(sum); } map.put(sum,map.getOrDefault(sum, 0)+1); } return result; } }```给你一个下标从 0 开始的整数数组nums 。每次操作中,你可以: 选择两个满足 0 <= i, j < nums.length 的不同下标 i 和 j 。 选择一个非负整数 k ,满足 nums[i] 和 nums[j] 在二进制下的第 k 位(下标编号从 0 开始)是 1 。 将 nums[i] 和 nums[j] 都减去 2k 。 如果一个子数组内执行上述操作若干次后,该子数组可以变成一个全为 0 的数组,那么我们称它是一个 美丽 的子数组。 请你返回数组 nums 中 美丽子数组 的数目。 子数组是一个数组中一段连续 非空 的元素序列。解答错误 官方题解 输入 nums = [524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,524287,52428... 输出 -1794967296 预期结果 2500000000
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值