每日一道leetcode(2026.04.08):区间乘法查询后的异或 I

每日一道leetcode(2026.04.08):区间乘法查询后的异或 I

  • [1. 题目](#1. 题目)
  • [2. 分析](#2. 分析)
  • [3. 代码实现](#3. 代码实现)
  • [4. 总结](#4. 总结)

1. 题目

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

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

a. 设定 idx = li。

b. 当 idx <= ri 时: 更新:nums[idx] = (nums[idx] * vi) % (10e9 + 7)

c. 将 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 <= 10e3
1 <= nums[i] <= 10e9
1 <= q == queries.length <= 10e3
queries[i] = [li, ri, ki, vi]
0 <= li <= ri < n
1 <= ki <= n
1 <= vi <= 10e5

2. 分析

今天这道题算是近期遇到的最简单的一道了,虽然标注的是中等难度。只是一如既往的,需要在理解题目的意思上花费一些时间。

二维数组queries,可以理解为固定的n*4,queries[i]中的每个数值有固定的含义,依次为遍历的起点index,遍历的终点index,遍历步长,相乘的系数,只是需要注意一下相乘的结果可能超出int的范围,需要将乘积的结果转为long,求余后还原为int格式。

3. 代码实现

java 复制代码
class Solution {
    public int xorAfterQueries(int[] nums, int[][] queries) {
        int from;
        int to;
        int step;
        int ratio;
        for (int[] query : queries) {
            from = query[0];
            to = query[1];
            step = query[2];
            ratio = query[3];
            for (int i = from; i <= to; i += step) {
                nums[i] = (int) ((long) nums[i] * ratio % 1000000007);
            }
        }
        int res = 0;
        for (int num : nums) {
            res ^= num;
        }
        return res;
    }
}

4. 总结

明天应该是这个题目的升级版。

相关推荐
2301_8227032021 分钟前
鸿蒙flutter三方库实战——教育与学习平台:Flutter Markdown
学习·算法·flutter·华为·harmonyos·鸿蒙
Jia ming32 分钟前
C语言实现日期天数计算
c语言·开发语言·算法
无限进步_1 小时前
【C++&string】大数相乘算法详解:从字符串加法到乘法实现
java·开发语言·c++·git·算法·github·visual studio
苏纪云1 小时前
蓝桥杯考前突击
c++·算法·蓝桥杯
W23035765731 小时前
经典算法详解:最长公共子序列 (LCS) —— 从暴力递归到动态规划完整实现
算法·动态规划·最长子序列
pzx_0012 小时前
【优化器】 随机梯度下降 SGD 详解
人工智能·python·算法
小肝一下2 小时前
每日两道力扣,day8
c++·算法·leetcode·哈希算法·hot100
无限进步_2 小时前
【C++】验证回文字符串:高效算法详解与优化
java·开发语言·c++·git·算法·github·visual studio
Meme Buoy2 小时前
18.补充数学1:生成树-最短路径-最大流量-线性规划
数据结构·算法
paeamecium2 小时前
【PAT甲级真题】- Count PAT‘s (25)
c++·算法·动态规划·pat考试·pat