首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

和可被k整除的子数组问题

. - 力扣(LeetCode) 二·思路: 思路:前缀和第二种表示方式即循环列出方式+同余定理+取模修正: 还是通过循环把它分为由0到i的位置一次由i位置往前走去组合,即可以得到所有的情况,因此要判断...x%k=0即转化为(sum-前缀和)%k成立即可 即由同余定理——> 满足sum%k=前缀和%k 通俗一点也就是通过for循环每次遍历前缀和(sumi之前的sum)都放入了hash,当遍历到i位置,只需要判断...ret=0; unordered_map hash; hash[0%k]=1;//特殊情况,这如果恰好x为此时的sumi那么对应的就是前缀和为0,即若它是...k)%k;//这里进行了修正处理原因是如果余数出现负数,则可能会有情况不符合如:【-1,2,9】,k=2这里 //2是一个子数组,但是sum加到2,此时余数是1,而hash没有对应...1的下标只有-1(-1%2)故这时可以通过修正把它变为1 if(hash.count(remainder)) ret+=hash[remainder];//上下顺序不能颠倒,

2400
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    个位数字为 K 的整数之和(枚举)

    题目 给你两个整数 num 和 k ,考虑具有以下属性的正整数多重集: 每个整数个位数字都是 k 。 所有整数之和是 num 。 返回该多重集的最小大小,如果不存在这样的多重集,返回 -1 。...注意: 多重集与集合类似,但多重集可以包含多个同一整数,空多重集的和为 0 。 个位数字 是数字最右边的数位。...示例 1: 输入:num = 58, k = 9 输出:2 解释: 多重集 [9,49] 满足题目条件,和为 58 且每个整数的个位数字是 9 。 另一个满足条件的多重集是 [19,39] 。...可以证明 2 是满足题目条件的多重集的最小长度。 示例 2: 输入:num = 37, k = 2 输出:-1 解释:个位数字为 2 的整数无法相加得到 37 。...解题 特殊情况先考虑,然后再考虑个位数个数从 1 - 10 个,能否得到 num 的个位数,注意 k*个数 <= num class Solution: def minimumNumbers(self

    41320

    13—个位数字为 K 的整数之和【LeetCode2310】

    个位数字为 K 的整数之和 - 力扣(LeetCode) 给你两个整数 num 和 k ,考虑具有以下属性的正整数多重集: 每个整数个位数字都是 k 。 所有整数之和是 num 。...返回该多重集的最小大小,如果不存在这样的多重集,返回 -1 。 注意: 多重集与集合类似,但多重集可以包含多个同一整数,空多重集的和为 0 。 个位数字 是数字最右边的数位。...提示: 0 <= num <= 3000 0 k <= 9 示例一: 输入:num = 58, k = 9 输出:2 解释: 多重集 [9,49] 满足题目条件,和为 58 且每个整数的个位数字是...示例二: 输入:num = 37, k = 2 输出:-1 解释:个位数字为 2 的整数无法相加得到 37 。 示例三: 输入:num = 0, k = 7 输出:0 解释:空多重集的和为 0 。...解题 解法一 思路 k的值为0 k 的最多的数只能有不超过10个,然后我们可以直接判定num为0的情况,直接返回0,num的情况可以直接返回-1。

    15120

    2023-05-17:一个正整数如果能被 a 或 b 整除,那么它是神奇的。 给定三个整数 n , a , b ,返回第 n 个神奇的数字。 因为答案可能很大,

    2023-05-17:一个正整数如果能被 a 或 b 整除,那么它是神奇的。给定三个整数 n , a , b ,返回第 n 个神奇的数字。...因为答案可能很大,所以返回答案 对 10^9 + 7 取模 后的值。输入:n = 4, a = 2, b = 3。输出:6。...3.对于每个二分查找猜测值,计算在 a和b中出现的神奇数字个数:m/a + m/b。然后计算 a 和 b 的公共倍数 lcm 在 m 范围内出现的神奇数字个数:m/lcm。...5.如果出现的神奇数字总数小于 n,则将左边界向右移动一位(即扩大区间的范围),并继续迭代。6.二分查找过程结束后,返回答案 ans % (10^9 + 7)。...在最坏情况下,二分查找的迭代次数为 O(logN)。因此,时间复杂度为 O(logN)。另外,在算法中只使用了几个整数变量来存储值和计算结果,所以空间复杂度为 O(1)。

    39700

    P1151 子数整数

    题目描述 对于一个五位数a1a2a3a4a5,可将其拆分为三个子数: sub1=a1a2a3 sub2=a2a3a4 sub3=a3a4a5 例如,五位数20207可以拆分成 sub1=202 sub2...=020(=20) sub3=207 现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1,sub2,sub3都可被K整除。...输入输出格式 输入格式: 输入由键盘输入,输入仅一行,为正整数K 输出格式: 输出到文件,输出文件的每一行为一个满足条件的五位数,要求从小到大输出。不得重复输出或遗漏。如果无解,则输出“No”。...输入输出样例 输入样例#1: 15 输出样例#1: 22555 25555 28555 30000 说明 0K<1000 日常刷水题, 对于每一个数,把这个数拆开就好!

    68590

    2024-11-26:使数组中位数等于 K 的最少操作数。用go语言,给定一个整数数组 nums 和一个非负整数 k, 你可以通

    2024-11-26:使数组中位数等于 K 的最少操作数。用go语言,给定一个整数数组 nums 和一个非负整数 k, 你可以通过选择数组中的任意元素进行加 1 或减 1 的操作。...请计算将 nums 的中位数调整为 k 所需的最小操作次数。 中位数是指将数组排序后位于中间位置的元素。 如果数组的长度为偶数,则中位数为中间两个元素中较大的那个。...大体步骤如下: 1.输入数据: • 有一个整数数组 nums,在本例中为 [2, 5, 6, 8, 5]。 • 一个非负整数 k,在这里为 4。...5.减少中位数到 k: 5.1.从中位数索引开始向左迭代数组(从索引 m 到 0),如果遇到的元素大于 k,则执行减 1 操作。...7.输出结果: • 最后,函数返回的最小操作次数 2 作为结果,表示需要通过两次操作才能使 nums 的中位数等于 k。

    6020

    【C语言&&数据结构】简单题目

    选择题 填空题 总结 Leetcode简单题 258.各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。...下面实现并提交代码: 不过这种做法感觉效率太低了一点 不过我就是这么菜 326.3的幂 给定一个整数,写一个函数来判断它是否是 3 的幂次方。...下面实现代码及提交运行代码: 367.有效的完全平方数 给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。...给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。...来源:力扣(LeetCode) 首先去实现一个函数判断一个数的位数是否为偶数,然后去遍历整个数组,如果是偶数的话加起来就行了: 提交运行: 1346.检查整除及其两倍数是否存在 给你一个整数数组

    98830

    2021-08-09:给定一个有正、有负、有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k。1)正常怎么做?2)

    2021-08-09:给定一个有正、有负、有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k。1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做?...main import "fmt" func main() { ret := isSum4([]int{1, 2, 3}, 4) fmt.Println(ret) } // arr中的值可能为正...,可能为负,可能为0 // 自由选择arr中的数字,能不能累加得到sum // 分治的方法 // 如果arr中的数值特别大,动态规划方法依然会很慢 // 此时如果arr的数字个数不算多(40以内),哪怕其中的数值很大...,分治的方法也将是最优解 func isSum4(arr []int, sum int) bool { if sum == 0 { return true } if...形成的累加和是pre // arr[i...end - 1] end(终止) 所有数字随意选择, // arr[0...end-1]所有可能的累加和存到ans里去 func process4(arr

    34530

    【优先算法】思还故里闾,欲归道无因 - 前缀和

    和为K的子数组 题目链接: 560. 和为 K 的子数组 题目描述: 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。...和可被 K 整除的⼦数组(蓝桥杯真题) 题目链接: 974....和可被 K 整除的⼦数组 题目描述: 给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的非空 子数组 的数目。 子数组 是数组中 连续 的部分。...• 想知道有多少个「以 i 为结尾的可被 k 整除的子数组」,就要找到有多少个起始位置为 x1, x2, x3… 使得 [x, i] 区间内的所有元素的和可被 k 整除。...连续数组 题目描述: 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。

    3900

    Perrin Numbers

    ,第三行是P(n)能否整除n,我们观察发现2, 3, 5, 7, 11, 13对应的佩林数和n数列能够正好整除,而这恰好就是0-14范围内的素数列表 经过继续计算不能看出, P(n) 可被 n 整除的n...值似乎都是素数,因此,我们可以提出猜想: 令 S 为所有数字 n 的集合,使得 P(n) 可被 n 整除。...S 是所有素数的集合吗? 结果表明 对于所有素数 n,P(n) 都能被 n 整除。 对于P(n) 可被n 整除的任何数字n,我们将其称为“佩林伪素数”(Perrin pseudo-prime)。...实际上,我们可以验证暴力破解方法的运行时间是以指数形式增长的(通过归纳假设法) # 前三项由于都是固定值,只需要常数时间就可以返回结果 T (k) = 1, for k < 3 # n项需要递归调用前n...对于这个特定问题,我们唯一需要知道值 P(k) 的时候是在计算 P(k + 2) 和 P(k + 3) 时。

    35130

    2023-04-10:给定两个正整数x、y,都是int整型(java里)返回0 ~ x以内,每位数字加起来是y的数字个数。比如,

    2023-04-10:给定两个正整数x、y,都是int整型(java里) 返回0 ~ x以内,每位数字加起来是y的数字个数。...比如,x = 20、y = 5,返回2, 因为0 ~ x以内,每位数字加起来是5的数字有:5、14, x、y范围是java里正整数的范围, x <= 2 * 10^9, y <= 90。...答案2023-04-10: 本文介绍了两种解决给定 x 和 y,求 0~x 中每位数字之和为 y 的数字个数的方法。...当 cur == x / offset % 10 时,需要递归计算下一位数字的方案总数,即 count(x, i-1, num+cur*offset, sum-cur)。...具体来说,我们可以使用一个二维数组 dp 来记录已经计算过的状态,如果当前状态已经被计算过,则直接返回其对应的结果。

    22430

    全国青少年软件编程等级考试正式1级测试卷

    第1题 计算(a+b)/c的值 给定3个整数a、b、c,计算表达式(a+b)/c的值,/是整除运算。...(-10,000 < a,b,c < 10,000, c不等于0) 输出 输出一行,即表达式的值。 样例输入 1 1 3 样例输出 0 第2题 反向输出一个三位数 将一个三位数反向输出。...样例输入 3.1415926535798932 样例输出 3.141592653580 第5题 判断能否被3,5,7整除 给定一个整数,判断它能否被3,5,7整除,并输出以下信息: 1、能同时被3,5...时间限制:1000 内存限制:65536 输入 输入一行,包括一个整数。 输出 输出一行,按照描述要求给出整数被3,5,7整除的情况。...第8题 含k个3的数 输入两个正整数 m 和 k,其中1 k 整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。

    4.4K30
    领券