[LC优选算法#18] 前缀和 | 除⾃⾝以外数组的乘积 | 和为K的⼦数组 | 和可被K整除的⼦数组

发布时间:2026/7/16 15:45:07

[LC优选算法#18] 前缀和 | 除⾃⾝以外数组的乘积 | 和为K的⼦数组 | 和可被K整除的⼦数组
1. 除⾃⾝以外数组的乘积除⾃⾝以外数组的乘积解题思路由于题目限制了不能使用除法因此不能采用全部相乘在除以nums[i]的方式解题。从暴力解法出发我们只能将除nums[i]以外的元素相乘后逐个放入数组但这样重复的操作太多不符合O(N)的时间复杂度。因此我们采用前缀和思想优化暴力解法。前缀和O(N)对于返回数组中的每一个结果ret[i]都是由两部分组成的前面元素的乘积 *后面元素的乘积。因此我们可以预处理出两个前缀和数组一个数组存储每个数之前元素的乘积另一个存之后元素的乘积。classSolution{public:vectorintproductExceptSelf(vectorintnums){intnnums.size();vectorintfx(n,1);vectorintgx(n,1);for(inti1;in;i){fx[i]fx[i-1]*nums[i-1];}for(intin-2;i0;i--){gx[i]gx[i1]*nums[i1];}vectorintret;for(inti0;in;i){intleftfx[i];intrightgx[i];ret.push_back(left*right);}returnret;}};2. 和为K的⼦数组和为 k 的⼦数组解题思路暴力O(N^2)固定起始位置向后枚举每次加到末尾统计数组中和为K的子数组个数。前缀和 哈希表时O(N)空O(N)这道题和前缀和的例题类似但如果只是单单预处理一个前缀和数组后续还需要进行多次相减才能找到和为K的连续子数组个数和暴力枚举貌似没区别。对此我们引入哈希表存储这样问题就转化为在数组中查找和为sum[i] - k的前缀和了。classSolution{public:intsubarraySum(vectorintnums,intk){unordered_mapint,inthash;intsum0,cnt0;hash[0]1;for(autox:nums){sumx;if(hash.count(sum-k)1){cnthash[sum-k];}hash[sum];}returncnt;}};3. 和可被K整除的⼦数组和可被K整除的⼦数组前置知识同余定理如果(a - b) % n 0那么我们可以得到一个结论a % n b % n反过来也成立。⽤⽂字叙述就是如果两个数相减的差能被 n 整除当且仅当这两个数对 n 取模的结果相同。负数取模修正C中对负数取模结果还会返回负数取模结果加上符号。我们需要对取模结果进行修正以(a % n n) % n的形式输出保证为正。例如-1 % 3 (-1 % 3 3) % 3 2。解题思路前缀和 哈希表时O(N)空O(N)本题解题思路和上题类似都是用哈希表前缀和解决。根据同余定理如果s1 % k和sum % k的余数相同那么所求的子区间(sum - s1) % k 0。这样问题就变为找到在[0, i - 1]区间内有多少前缀和的余数等于sum[i] % k的区间即可。classSolution{public:intsubarraysDivByK(vectorintnums,intk){unordered_mapint,inthash;//存储余数出现次数intsum0,ret0;hash[0]1;//0位置初始化为1因为0是可以整除任何数的元素for(autox:nums){sumx;intr(sum%kk)%k;if(hash.count(r)){rethash[r];//sum范围内所有余数为r的子区间都满足}hash[r];}returnret;}};// 本期内容就到这里啦如果对你有帮助请三连支持我是青云我们下期见^_~

相关新闻

如何构建企业级后台管理系统:Layui-Admin架构设计与技术决策深度解析

如何构建企业级后台管理系统:Layui-Admin架构设计与技术决策深度解析

2026/7/9 7:59:35

如何构建企业级后台管理系统:Layui-Admin架构设计与技术决策深度解析 【免费下载链接】layui-admin 基于layui2.x的带后台的通用管理系统 项目地址: https://gitcode.com/gh_mirrors/la/layui-admin 在数字化转型浪潮中,企业级后台管理系统的构建…

芯片工程师求职避坑指南:从华为海思 2025 秋招看 3 大关键决策点

芯片工程师求职避坑指南:从华为海思 2025 秋招看 3 大关键决策点

2026/7/8 18:16:29

芯片工程师求职避坑指南:从华为海思2025秋招看三大关键决策点引言:芯片工程师的职业十字路口当半导体行业站上科技发展的风口,芯片工程师的职场选择从未像今天这样充满机遇与挑战。2025年华为海思秋招季,一位拿到14a定级的候选人最…

Claude Code AI编程助手对比实验:提示词工程如何影响代码生成质量

Claude Code AI编程助手对比实验:提示词工程如何影响代码生成质量

2026/7/9 8:34:22

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你正在考虑用 AI 编程助手来提升开发效率,可能已经注意到市面上各种工具层出不穷。但真正的问题是:这些 A…

5分钟搭建Windows RTMP直播服务器:nginx-rtmp-win32终极指南

5分钟搭建Windows RTMP直播服务器:nginx-rtmp-win32终极指南

2026/7/16 15:40:17

5分钟搭建Windows RTMP直播服务器:nginx-rtmp-win32终极指南 【免费下载链接】nginx-rtmp-win32 Nginx-rtmp-module Windows builds. 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-win32 想在Windows电脑上快速搭建一个专业的直播服务器吗&…

分享一套锋哥原创的SpringBoot4+Vue3通讯录管理系统

分享一套锋哥原创的SpringBoot4+Vue3通讯录管理系统

2026/7/16 15:40:17

大家好,我是Java1234_小锋老师,分享一套锋哥原创的SpringBoot4Vue3通讯录管理系统 项目介绍 随着移动互联网与信息化办公的快速发展,个人与组织对联系人信息的高效管理需求日益增长。传统的纸质通讯录或分散的电子表格方式存在检索困难、数据…

Illustrator智能填充终极指南:如何用Fillinger脚本提升10倍设计效率 [特殊字符]

Illustrator智能填充终极指南:如何用Fillinger脚本提升10倍设计效率 [特殊字符]

2026/7/16 15:40:17

Illustrator智能填充终极指南:如何用Fillinger脚本提升10倍设计效率 🎨 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Illustrator中繁琐的图案填充而…

Moonlight主题与其他流行VS Code主题对比:为什么选择月光配色

Moonlight主题与其他流行VS Code主题对比:为什么选择月光配色

2026/7/16 15:40:17

Moonlight主题与其他流行VS Code主题对比:为什么选择月光配色 【免费下载链接】moonlight-vscode-theme A VS Code theme with bubblegum colors on a moonlit background 项目地址: https://gitcode.com/gh_mirrors/mo/moonlight-vscode-theme 在众多VS Cod…

如何快速优化Windows系统:开源Win11Debloat工具的完整指南

如何快速优化Windows系统:开源Win11Debloat工具的完整指南

2026/7/16 15:40:17

如何快速优化Windows系统:开源Win11Debloat工具的完整指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter an…

向量处理机9_多级互连网络的拓扑结构与控制策略解析

向量处理机9_多级互连网络的拓扑结构与控制策略解析

2026/7/16 15:30:16

1. 多级互连网络基础概念 第一次接触多级互连网络时,我盯着拓扑图看了整整半小时——那些交叉的连线像极了老式电话交换机的配线盘。其实它的核心思想很简单: 用多级交换开关构建可重构的数据通路 。想象一下城市立交桥系统,车辆&#xff0…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/16 0:35:09

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/16 14:29:31

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/16 14:18:17

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

Python实现跨境电商商品图批量翻译教程

Python实现跨境电商商品图批量翻译教程

2026/7/16 0:09:31

一、问题引入做跨境电商的卖家朋友,你是否遇到过这样的困扰?每次上架新品到亚马逊、Shopee或Lazada等平台,都需要处理大量商品图片的多语言版本。比如上架200款衣服,每款需要翻译成英语、日语、韩语等5种语言,这意味着…

跨境电商多语言商品图翻译方案实现

跨境电商多语言商品图翻译方案实现

2026/7/16 0:09:31

一、问题引入对于做跨境电商的卖家来说,多语言商品图的制作一直是令人头疼的环节。当你准备在亚马逊、Shopee、Lazada等多个平台同步上架新品时,首先遇到的就是图片翻译问题。以一位做家居用品的卖家为例,他需要将200张商品图片中的英文文案全…

Windows系统文件d3dx9_36.dll丢失找不到问题解决

Windows系统文件d3dx9_36.dll丢失找不到问题解决

2026/7/16 0:09:31

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…