当前位置: 首页 > news >正文

wordpress是建站工具 还是语言新网域名注册

wordpress是建站工具 还是语言,新网域名注册,政府网站 建设汇报,php网站添加验证码本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 质数、最大公约数、菲蜀定理 LeetCode 1590. 使数组和能被 P 整除 给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空)&am…

本文涉及的基础知识点

C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频
质数、最大公约数、菲蜀定理

LeetCode 1590. 使数组和能被 P 整除

给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空),使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。
请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回 -1 。
子数组 定义为原数组中连续的一组元素。
示例 1:
输入:nums = [3,1,4,2], p = 6
输出:1
解释:nums 中元素和为 10,不能被 p 整除。我们可以移除子数组 [4] ,剩余元素的和为 6 。
示例 2:
输入:nums = [6,3,5,2], p = 9
输出:2
解释:我们无法移除任何一个元素使得和被 9 整除,最优方案是移除子数组 [5,2] ,剩余元素为 [6,3],和为 9 。
示例 3:
输入:nums = [1,2,3], p = 3
输出:0
解释:和恰好为 6 ,已经能被 3 整除了。所以我们不需要移除任何元素。
示例 4:
输入:nums = [1,2,3], p = 7
输出:-1
解释:没有任何方案使得移除子数组后剩余元素的和被 7 整除。
示例 5:
输入:nums = [1000000000,1000000000,1000000000], p = 3
输出:0
提示:
1 <= nums.length <= 105
1 <= nums[i] <= 109
1 <= p <= 109

前缀和

N = nums.size()
由于是对p求余,所以求前缀和的时候直接对p求余。
如果nums的和能被p整除则返回0。否则令p1 = sum(num)%p ;
假定nums[i…j]被删除,枚举j。令preSum[j+1]为p2。则在preSum[0…j]中求值为 (p1-p2+p)%p 的下标i,如果有多个符合的下标取最大下标。ret = j-i+1的最小值,如果ret == n,返回-1,否则返回ret。
mValueIndex 的key:preSum[i]的值,value:i。

代码

前缀和

class Solution {public:int minSubarray(vector<int>& nums, int p) {const int N = nums.size();vector<int> preSum(1);for (const auto& n : nums) {preSum.emplace_back((n + preSum.back()) % p);}const int p1 = preSum.back() % p;if (0 == p1) { return 0; }unordered_map<int, int> mValueIndex;int ret = N;for (int j = 0; j < N; j++) {mValueIndex[preSum[j]] = j;const int p3 = (preSum[j + 1] - p1 + p) % p;if (mValueIndex.count(p3)) {ret = min(ret, j + 1 - mValueIndex[p3]);}}return (N == ret) ? -1 : ret;}};

单元测试

vector<int> nums;int p;TEST_METHOD(TestMethod11){nums = { 3, 1, 4, 2 }, p = 6;auto res = Solution().minSubarray(nums, p);AssertEx(1, res);}TEST_METHOD(TestMethod12){nums = { 6,3,5,2 }, p = 9;auto res = Solution().minSubarray(nums, p);AssertEx(2, res);}TEST_METHOD(TestMethod13){nums = { 1,2,3 }, p = 3;auto res = Solution().minSubarray(nums, p);AssertEx(0, res);}TEST_METHOD(TestMethod14){nums = { 1,2,3 }, p = 7;auto res = Solution().minSubarray(nums, p);AssertEx(-1, res);}TEST_METHOD(TestMethod15){nums = { 1000000000,1000000000,1000000000 }, p = 3;auto res = Solution().minSubarray(nums, p);AssertEx(0, res);}

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

http://www.shuangfujiaoyu.com/news/46386.html

相关文章:

  • 焦作建设网站哪家好在线推广
  • 网站开发的语言有什么软件门户网站怎么做
  • 暖通设计网站推荐杭州网站优化流程
  • 影视免费网站模板计算机培训课程
  • wordpress标签样式网站建设优化推广
  • 建设网站好公司哪家好最新网络营销方式
  • 手机做wifi中继上外国网站广州网站设计建设
  • 个人博客网站搭建模板网页设计制作网站教程
  • 做网站哪家最便宜网络营销案例2022
  • 环县网站怎么做外链网盘下载
  • 信誉好的顺德网站建设中央常委成员名单
  • 哪个网站可以做视频百度推广优化师培训
  • 政府网站的建设目标潍坊百度网站排名
  • 旧货交易网站开发的背景seo是网络优化吗
  • 手机培训网站建设推广找客户平台
  • 微信开发者工具概述西安百度关键词优化排名
  • 网站设计方法曼联目前积分榜
  • 成都网站优化外包seo关键词优化费用
  • wordpress爆破工具yoast seo
  • 做内衣模特接广告网站磁力猫
  • 做外单都有什么网站网络运营培训课程
  • 旅游网站建设报价方案网站seo最新优化方法
  • wordpress网站慢常德seo
  • 做公益网站的原因景区营销案例100例
  • 网站手机缩放googleseo推广
  • 网站建设需要多久才能学会网络推广怎么找客户
  • 企业网站建设对网络营销的影响主要表现在( )免费推广的预期效果
  • 怎么免费建设个人网站网站链接提交
  • 正规的培训行业网站制作怎么在网上打广告
  • 最好的看vr影片的设备长沙seo优化哪家好