【优选算法题练习】day8

news2024/10/10 2:19:43

文章目录

  • 一、974. 和可被 K 整除的子数组
    • 1.题目简介
    • 2.解题思路
    • 3.代码
    • 4.运行结果
  • 二、525. 连续数组
    • 1.题目简介
    • 2.解题思路
    • 3.代码
    • 4.运行结果
  • 三、560. 和为 K 的子数组
    • 1.题目简介
    • 2.解题思路
    • 3.代码
    • 4.运行结果
  • 总结


一、974. 和可被 K 整除的子数组

1.题目简介

974. 和可被 K 整除的子数组

给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的(连续、非空) 子数组 的数目(子数组 是数组的 连续 部分)。
在这里插入图片描述
在这里插入图片描述

2.解题思路

3.代码

class Solution {
public:
    int subarraysDivByK(vector<int>& nums, int k) {
        //(sum[i] - sum[x]) % k == 0 => sum[i] % k == sum[x] % k;
        unordered_map<int, int> ma;//存储至今为止的前缀和对k取余的结果出现的次数
        ma[0 % k] = 1;
        int sum = 0;
        int ret = 0;
        for(int i = 0;i < nums.size(); ++i)
        {
            sum += nums[i];
            int t = (sum % k + k) % k;//修正负数取模的结果。C++对负数的取模机制会导致结果出错(先去掉负数的符号,然后将它当中一个正数进行取模,最后再带上符号)
            if(ma.count(t)) ret += ma[t];
            ma[t]++;
        }
        return ret;
    }
};

4.运行结果

在这里插入图片描述

二、525. 连续数组

1.题目简介

525. 连续数组
给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。
在这里插入图片描述

2.解题思路

3.代码

class Solution {
public:
    int findMaxLength(vector<int>& nums) {
        map<int, int> ma;//存放至今为止出现的前缀和以及第一次出现该sum的下标
        ma[0] = -1;//默认有一个前缀和为0的情况
        for(auto& e : nums)
        {
            if(e == 0) e = -1;
        }
        //将数组中的0转化为-1,这样问题就转变为和为0的最长连续子数组,推测为找和为sum的最短连续子数组
        int sum = 0;
        int ret = 0;
        for(int i = 0;i < nums.size(); ++i)
        {
            sum += nums[i];
            if(ma.count(sum)) 
            {
                ret = max(ret, i - ma[sum]);
            }
            else
            ma[sum] = i;

        }
        return ret;
    }
};

4.运行结果

在这里插入图片描述

三、560. 和为 K 的子数组

1.题目简介

560. 和为 K 的子数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。
在这里插入图片描述

2.解题思路

3.代码

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        unordered_map<int, int> ma;//至今为止前缀和出现的次数
        ma[0] = 1;//初始化(前缀和正好等于k的情况)
        int ret = 0;
        int sum = 0;//前缀和
        for(int i = 0;i < nums.size(); ++i)
        {
            sum += nums[i];
            int t = sum - k;
            if(ma.count(t)) ret += ma[t];
            ma[sum]++;
        }
        return ret;
    }
};

4.运行结果

在这里插入图片描述


总结

今天是算法练习的第8天。
故以往之不谏,知来者之可追。继续加油,决不放弃。
如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/790544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3+ElementPlus实际项目快速开发模板Pure Admin

发现了一个超好用的模板项目&#xff0c;不仅有很全面的完整版&#xff0c;还有精简的可以直接拿来用的后台管理框架。文档很全面&#xff0c;甚至有B站配套视频! PureAdmin保姆级文档 vue-pure-admin快速开发教程&#xff08;使用Vue3、Vite、Element-Plus、TypeScript、Tail…

基于nodejs+vue微信小程序加油站服务管理系统

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 基于微信小程序加油站服务 系统分为用户和管理员两个角色 用户微信端的主要功能有&#xff1a; 1.用户注册和登陆小程序 2.用户…

【C#】微软的Roslyn 是个啥?

一、说明 Roslyn 是微软重写的C#编译器并开源。 Roslyn 是 C# 和 Visual Basic.NET 开源编译器的代号。以下是它如何在过去十年企业Microsoft的最黑暗中开始&#xff0c;并成为所有C#&#xff08;和VB&#xff09;的开源&#xff0c;跨平台&#xff0c;公共语言引擎&#xff0c…

LiveGBS流媒体平台GB/T28181功能-设备树自定义分组自定义组织机构选择通道共享给上级国标平台配置权限给指定用户

LiveGBS流媒体平设备树自定义分组自定义组织机构选择通道共享给上级国标平台权限给指定用户 1、背景2、分组2.1、新建分组2.2、选择通道2.3、导入设备2.4、编辑名称2.5、删除分组2.6、移除分组 3、国标级联3.1、分组共享节点3.1.1、共享给上级平台3.1.2、分配权限给用户 3.2、级…

智能制造RFID设备包括哪些?

智能制造是现代制造业的重要发展方向&#xff0c;其核心是数字化、网络化和智能化。而在智能制造中&#xff0c;RFID设备是一种不可或缺的技术手段&#xff0c;主要用于实现物品的识别、追踪和化管理。以下是智能制造中常用的RFID设备及其功能&#xff1a; 1、 RFID读写器 RFID…

环境搭建和HelloWorld

文章目录 环境搭建和HelloWorld计算机基础知识计算机诞生计算机发展历程计算机硬件计算机软件 DOS命令概述打开命令提示符窗口常用DOS命令 Java概述和环境搭建诞生和发展Java平台版本和作用Java语言特点Win64系统搭建Java8开发环境 第一行代码--HelloWorld创建Java文件编写Java…

PGembedding 代码分析

pgembedding 存储结构 pg embedding 数据是存在共享内存中的&#xff0c;pg down 之后索引数据就没了&#xff0c;但索引对象本身还在&#xff0c;第一次访问时会重新创建。 数据以 plain 的形式存储&#xff0c;其中每个点是这样的结构&#xff1a; idx_size&#xff1a; 表…

Stephen Wolfram:概率从何而来?

Where Do the Probabilities Come From? 概率从何而来&#xff1f; OK, so ChatGPT always picks its next word based on probabilities. But where do those probabilities come from? Let’s start with a simpler problem. Let’s consider generating English text one …

Palo Alto Networks 智能网络安全保护任何地方的用户、应用和数据

Palo Alto Networks 不仅能够为数字企业提供当下所需的网络安全服务&#xff0c;还能为日后的工作打好安全基础&#xff0c;让企业无需在二者间权衡和纠结&#xff0c;这样的网络安全合作伙伴仅此一家。我们承诺将双管齐下&#xff0c;在保障数字企业的安全方面绝不妥协退让。下…

linux barrier 栅栏屏障,让多任务在栅栏处集合,全部到齐后同时出发

​专栏内容&#xff1a; postgresql内核源码分析 手写数据库toadb 并发编程 个人主页&#xff1a;我的主页 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 概述 pthread_barrier_t 这是posix定义线程同步方法&#xff0…

Windows电脑应用设置开机自启动

背景 比如我们程序员&#xff0c;开机就想电脑自启动谷歌浏览器和VS Code等开发工具&#xff0c;自己什么都不用动&#xff0c;怎么办&#xff1f;有人说可以在任务管理器的启动里设置&#xff0c;但还是有些工具里面没有的&#xff0c;也就是不能这样设置的&#xff0c;今天教…

Windows环境下git客户端中的git-bash和MinGW64

我们在 Windows10 操作系统下&#xff0c;安装了 git 客户端之后&#xff0c;可以通过 git-bash.exe 打开一个 shell&#xff1a; 执行一些 linux 系统里的命令&#xff1a; 注意到上图紫色的 MINGW64. Mingw-w64 是原始 mingw.org 项目的改进版&#xff0c;旨在支持 Window…

数据结构【线性表】

数据结构入门级 第二章 线性表 一、线性表的定义和基本操作 线性表的定义&#xff1a;具有相同属性数据类型的数据元素组成的一个有限序列&#xff1b;除第一个元素外的元素都有直接前驱&#xff0c;除最后一个元素外的元素都有直接后继&#xff1b;存在一个唯一被称为“第一个…

【ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍】

文章目录 STM Register summarySTM DMA 相关的寄存器DMA TransferBurst requestSingle and burst request STM Register summary STM 的寄存器主要可以分为以下几类&#xff1a; STM DMA 相关的&#xff1b;STM HW Trigger 相关的&#xff1b;系统控制及状态寄存器&#xff1…

CSS布局定位+装饰

一、定位 1.1 网页常见布局方式 1. 标准流 1. 块级元素独占一行 → 垂直布局 2. 行内元素/行内块元素一行显示多个 → 水平布局 2. 浮动 1. 可以让原本垂直布局的 块级元素变成水平布局 3. 定位 1. 可以让元素自由的摆放在网页的任意位置 2. 一般用于 盒子之间的层叠情…

Java的运行时数据区域

Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有些区域随着虚拟机进程的启动而一直存在&#xff0c;有些区域则是依赖用户线程的启动和结束而建立和销毁。 根据《Jav…

OpenAI宣布安卓版ChatGPT正式上线;一站式 LLM底层技术原理入门指南

&#x1f989; AI新闻 &#x1f680; OpenAI宣布安卓版ChatGPT正式上线 摘要&#xff1a;OpenAI今日宣布&#xff0c;安卓版ChatGPT已正式上线&#xff0c;目前美国、印度、孟加拉国和巴西四国的安卓用户已可在谷歌Play商店下载&#xff0c;并计划在下周拓展到更多地区。Chat…

VMware Network Adapter VMnet1和VMnet8 未识别的网络问题

在安装虚拟机的时候使用的网络类型未NAT模式&#xff0c;但是却无法和外部网络ping通&#xff0c;并且使用Xshell进行连接反应也非常慢&#xff1b;于是在我查询半天问题之后&#xff0c;这个问题得到了解决&#xff0c;具体如下&#xff1a; 在使用NAT网络模式的时候需要进行…

【portswigger】第二专题-XSS(二)

portswigger 靶场&#xff08;第二章节&#xff09;XSS 视频同步更新至bilibili bibi地址欢迎关注微信公众号&#xff1a;微光安全团队 这是官方备忘录&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet总体目录 我这里简单总结一下每个…

nodejs+vue+elementui高校科研队伍管理系统_2byeq

系统阐述的是使用科研管理系统&#xff0c;对于nodejs、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计&#xff0c;描述&#xff0c;实现和分析与测试方面来表明开发的过程。开发中使用了vue框架和MySql数据库技术搭建系统的整体架构。利用这些技术结合实际需…