【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;
    }
}
相关推荐
代码什么用2 小时前
LeetCode-42. 接雨水
算法·leetcode
lengxuenong2 小时前
枚举及其优化学习手册
c++·学习·算法·青少年编程
小O的算法实验室2 小时前
IEEE TAI,RoCo:基于角色的LLM协作实现自动启发式设计
算法
小范的技术工坊2 小时前
大模型蒸馏
人工智能·算法·数据挖掘·大模型
Benny_Tang2 小时前
P9527 [JOIST 2022] 洒水器 / Sprinkler 题解
c++·算法
kiracrimson3 小时前
希尔排序:让插入排序不再怕逆序
数据结构·算法·排序算法
yi0113 小时前
DAY17: LeetCode 139|单词拆分:从“把单词删掉”到用 DP 记录合法切口
人工智能·笔记·python·算法·leetcode·动态规划
陈希瑞3 小时前
LongCat-2.5-Preview 的web逆向能力实测
人工智能·算法·wasm
雾喔5 小时前
近日总结 & 面试经验
面试·职场和发展
tangguofeng5 小时前
基于分治策略的循环赛日程表问题的思路讲解
算法