leetcode 3653. 区间乘法查询后的异或 I 中等

给你一个长度为 n 的整数数组 nums 和一个大小为 q 的二维整数数组 queries,其中 queries[i] = [li, ri, ki, vi]

对于每个查询,按以下步骤执行操作:

  • 设定 idx = li
  • idx <= ri 时:
    • 更新:nums[idx] = (nums[idx] * vi) % (109 + 7)
    • idx += ki

在处理完所有查询后,返回数组 nums 中所有元素的 按位异或结果。

示例 1:

输入: nums = 1,1,1, queries = \[0,2,1,4]

输出: 4

解释:

  • 唯一的查询 [0, 2, 1, 4] 将下标 0 到下标 2 的每个元素乘以 4。
  • 数组从 [1, 1, 1] 变为 [4, 4, 4]
  • 所有元素的异或为 4 ^ 4 ^ 4 = 4

示例 2:

输入: nums = 2,3,1,5,4, queries = \[1,4,2,3,0,2,1,2]

输出: 31

解释:

  • 第一个查询 [1, 4, 2, 3] 将下标 1 和 3 的元素乘以 3,数组变为 [2, 9, 1, 15, 4]
  • 第二个查询 [0, 2, 1, 2] 将下标 0、1 和 2 的元素乘以 2,数组变为 [4, 18, 2, 15, 4]
  • 所有元素的异或为 4 ^ 18 ^ 2 ^ 15 ^ 4 = 31

提示:

  • 1 <= n == nums.length <= 10^3
  • 1 <= nums[i] <= 10^9
  • 1 <= q == queries.length <= 10^3
  • queries[i] = [li, ri, ki, vi]
  • 0 <= li <= ri < n
  • 1 <= ki <= n
  • 1 <= vi <= 10^5

分析:由于数据量比较小,直接暴力模拟,先计算所有查询,然后再对所有元素进行异或。

cpp 复制代码
class Solution {
public:
    int xorAfterQueries(vector<int>& nums, vector<vector<int>>& queries) {
        int n=queries.size();
        long long mod=1e9+7;
        for(int i=0;i<n;++i)
        {
            int l=queries[i][0],r=queries[i][1],k=queries[i][2],v=queries[i][3];
            for(int idx=l;idx<=r;idx+=k)
                nums[idx]=(long long)(1LL*nums[idx]*v)%mod;
        }
        int ans=nums[0];
        for(int i=1;i<nums.size();++i)
            ans=ans^nums[i];
        return ans;
    }
};
相关推荐
evans在进步11 小时前
LeetCode 200:岛屿数量——Java DFS 染色法详解
java·leetcode·深度优先
旖旎夜光12 小时前
LeetCode 202:快乐数(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针
君君思密达13 小时前
Leetcode Hot 100 题目详解-哈希表
数据结构·算法·leetcode
203号居民14 小时前
LeetCode hot 100 —560. 和为 K 的子数组
java·算法·leetcode
退休倒计时14 小时前
【每日一题】LeetCode 20. 有效的括号 TypeScript
算法·leetcode·职场和发展·typescript
Forever Nore15 小时前
LeetCode 5 最长回文子串 - 中心扩散
linux·算法·leetcode
Forever Nore16 小时前
LeetCode 6 Z 字形变换 - 按行模拟
算法·leetcode
wabs66618 小时前
关于哈希表【力扣383.赎金信的思考】
算法·leetcode·散列表
.道阻且长.1 天前
2.LeetCode算法习题讲解--双指针--复写零
算法·leetcode·职场和发展
To_OC1 天前
LC 438 找到所有字母异位词:暴力超时后,我靠滑动窗口一招搞定
javascript·算法·leetcode