元素和是K的倍数的子串的最大长度
来源:互联网 发布:中国电信淘宝旗舰店 编辑:程序博客网 时间:2024/05/16 09:55
/***********************************************************************
* 元素和是K的倍数的子串的最大长度:
* 给定数组arr和整数K,求元素和是K的倍数的子串的最大长度
* 例:arr=[1,2,3,4,5] K=5
* 子串[5],[2,3],[1,2,3,4],[1,2,3,4,5]的和都是K的倍数
* 所以返回最大长度5
* 元素和是K的倍数的子串的最大长度:
* 给定数组arr和整数K,求元素和是K的倍数的子串的最大长度
* 例:arr=[1,2,3,4,5] K=5
* 子串[5],[2,3],[1,2,3,4],[1,2,3,4,5]的和都是K的倍数
* 所以返回最大长度5
************************************************************************/
//思路:暴力法可以以O(N^2)的时间复杂度求解,考虑更优的解法// 假设N>M,如果(arr[0]+...+arr[M])%K等于(arr[0]+...+arr[N])%K// 则(arr[M+1]+...+arr[N])%K肯定等于0// 所以对于arr[k],前k项和的余数为:(arr[0]+...+arr[k])%K// arr[k]与第一次等于这个余数的元素arr[i]之间的子串就是满足要求的// 求取最大长度即可。但数组前应添加一个0元素,否则第一个元素进不到求取范围#include<iostream>#include<vector>using namespace std;int maxLength(vector<int> arr, int N, int K){ int result = 0; vector<int> fisrtAppear(K);//记录不同余数第一次出现的索引 for (int i = 0; i < K; i++) fisrtAppear[i] = -1; fisrtAppear[0] = 0; int mod = 0; for (int i = 0; i < N; i++) { mod = (mod + arr[i]) % K; if (fisrtAppear[mod] == -1) fisrtAppear[mod] = i+1; else result = result < (i+1 - fisrtAppear[mod]) ? (i+1 - fisrtAppear[mod]) : result; } return result;}int main(){ int N = 5; vector<int> arr(N); for (int i = 0; i < N; i++) arr[i] = i+1; int K = 5; cout << maxLength(arr, N, K); return 0;}
阅读全文
0 0
- 求数组元素和是K的倍数的子串的最大长度
- 元素和是K的倍数的子串的最大长度
- 序列元素和是k的倍数的最大子串长度
- java实现连续子数组的最大和(子向量的长度至少是1)
- 长度不超过k的最大连续子序列(单调队列)
- 求数组(只有正数)中元素和为K的最长子数组的长度
- 20170831美团笔试:长度为n的数组中最长的和为K的倍数的连续子数组
- 限定长度的最大子段和
- k的倍数
- Java求字符串的最大子串和长度
- 三重循环寻找最长连续字符串相加和为K值倍数的长度
- HDU 3415 Max Sum of Max-K-sub-sequence(长度不超过k的最大连续子序列和,单调队列)
- 对称子串的最大长度
- 求最大回文子串的长度
- 最大公共子串的长度模板
- UDP包的最大长度理论上是 64K, 但是实现上一般是 8K.
- 【hdu3415】【单调队列 】Max Sum of Max-K-sub-sequence【求长度不大于k的区间最大子串和】
- varchar长度需要是2的倍数吗?
- 1060:绝对值排序
- FastDHT配合FastDFS进行文件上传去重
- source insight使用技巧
- JavaScript之如何让数字千位分割,即每三位一个逗号间隔
- MySql 第一部分
- 元素和是K的倍数的子串的最大长度
- 跳石板---动态规划
- Java中关键字及其简要含义
- 如何在Spring官网下载jar包
- JAVA异常处理
- 爬虫实战11—分布式数据库架构分析、优化及要点
- 51nod1459 迷宫游戏(相当于最短路径,含2个权值)
- 51NOD 1298圆与三角形
- Kafka入门学习《一》