【leetcode】3524 求出数组的X值1

题目链接

题目描述

给你一个正整数数组 nums 和一个正整数 k。

你可以对数组执行一次操作:移除不重叠的前缀和后缀(可以为空),留下一个连续非空子数组。

对于每一种留下的子数组,计算:

(该子数组的乘积) % k = x

你需要统计所有可能的结果 x ∈ 0, k-1 出现的次数,返回一个长度为 k 的数组 result,其中:

resultx 表示得到 x 作为余数的方案数

解题思路

你可以移除任意前缀和后缀 ,留下的是一个非空的连续子数组。

也就是说:我们其实是统计所有子数组的乘积模 k 的结果分布

直接采用动态规划进行转移

java 复制代码
class Solution {
    public long[] resultArray(int[] nums, int k) {
        long[] ans = new long[k];
        long[] lurminexod = new long[k];

        for (int i : nums) {
            long[] newlurminexod = new long[k];
            
            for (int j = 0; j < k; j++) {
                int index = (int)(((long)j * i) % k);
                newlurminexod[index] += lurminexod[j];
            }
            newlurminexod[i % k]++;
            lurminexod = newlurminexod;

            for (int j = 0; j < k; j++) {
                ans[j] += lurminexod[j];
            }
        }

        return ans;
    }
}
相关推荐
leisoo80972 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
luj_17684 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法
郝学胜-神的一滴4 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
爱编程的小新☆5 小时前
【LeetCode】从递归到 Flood Fill:5 道题吃透 DFS 的选择、回溯与标记
java·算法·leetcode·深度优先·回溯·flood fill
Water_Sunzhipeng5 小时前
2024牛客暑期多校训练营1
算法
hetao17338375 小时前
2026-08-09~08-14 hetao1733837 的刷题记录
c++·算法
技术小黑5 小时前
RNN算法实战系列06 | LSTM 实现糖尿病探索与预测
rnn·算法·lstm
evans在进步5 小时前
LeetCode 33:搜索旋转排序数组——Java 两阶段二分查找详解
java·python·leetcode
Lzh编程小栈5 小时前
【嵌入式底层】SPI超透彻详解:通信原理、四线结构、四种模式、寄存器底层 + 面试全集
c语言·stm32·单片机·面试·职场和发展
疯狂打码的少年5 小时前
【数据结构】二叉树的性质(五大性质+计算)
数据结构·笔记·算法