Hash哈希

当需要快速查询数据的记录时:

  1. 手动按某规则为数据建立索引,利用数组维护数据
  2. 若1中需要开大数组爆内存,利用官方库的Hash集合,可以将最好情况下的时间复杂度优化到O(1)避免T和M。

1. LC 2036 最大好子数组和

VP双周赛123T3。一开始卡住了。一直想在Hash表里存每种数字出现的索引,查询nums[i]±k的所有可能索引,前缀和相减得到子数组和维护最大值。最后不出意外的T了。既然要找之前的最小前缀和,为啥不在Hash表里直接维护每个数字对应的最小前缀和呢?改完A了。

import java.util.HashMap;class Solution {public long maximumSubarraySum(int[] nums, int k) {HashMap<Integer, Long> m = new HashMap<>();int n = nums.length;long[] prefix = new long[n+1];long ans = Long.MIN_VALUE;long sum = 0;for (int i = 0; i < n; i++) {sum += nums[i];prefix[i+1] = sum;Long nk = m.get(nums[i] - k);Long pk = m.get(nums[i] + k);if(nk!=null){ans = Math.max(ans,sum-nk);}if(pk!=null){ans = Math.max(ans,sum-pk);}Long pre = m.get(nums[i]);if(pre==null){m.put(nums[i],prefix[i]);}else{m.put(nums[i],Math.min(prefix[i],pre));}}return ans==Long.MIN_VALUE?0:ans;}
}

注意子数组是闭区间,前缀和数组里加个哨兵即可。然后这道题实际上不需要前缀和数组,滚动一个前缀和就可以了,闭区间滞后一个元素即可。

import java.util.HashMap;class Solution {public long maximumSubarraySum(int[] nums, int k) {HashMap<Integer, Long> m = new HashMap<>();int n = nums.length;long ans = Long.MIN_VALUE;long sum = 0;for (int num : nums) {Long nk = m.get(num - k);Long pk = m.get(num + k);if (nk != null) {ans = Math.max(ans, sum + num - nk);}if (pk != null) {ans = Math.max(ans, sum + num - pk);}Long pre = m.get(num);if (pre == null) {m.put(num, sum);} else {m.put(num, Math.min(sum, pre));}sum += num;}return ans==Long.MIN_VALUE?0:ans;}
}

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

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

相关文章

新增长100人研讨会:快消零售专场探讨招商加盟数字化转型实战

2024年2月2日下午&#xff0c;一场由纷享销客与杨国福集团联合主办的招商加盟数字化转型研讨会在上海成功举办。本次研讨会汇聚了众多快消零售业界的领军人物&#xff0c;共同探讨行业未来的新增长点。 会议伊始&#xff0c;杨国福集团数字化中心负责人王林林发表了主题演讲&a…

Redis-面试题

一、基础 1、什么是Redis C语言编写,基于key-value存储的nosql开源内存数据库内存存储、数据结构优化,高性能一般用于应用和数据库之间的分布式缓存中间件提供主从复制+哨兵、集群的方式实现高可用,在redis集群中通过hash槽的方式实现数据分片,进一步提升性能和可扩展性2、…

使用Nginx或者Fiddler快速代理调试

1 背景问题 在分析业务系统程序问题时,存在服务系统环境是其它部门或者其它小组搭建或运维的,并且现在微服务时代,服务多且复杂,在个人机器上搭建起如此环境,要么费事费力,要么不具备充足条件。 急需有一种方法或者工具可以快速辅助调试定位分析问题。本文下面介绍代理方…

算法-递归

题目&#xff1a;打印中序遍历指定节点的后续节点 思路&#xff1a;两种情况当前节点右子树是否为null&#xff0c;如果不是返回右子树最左非空子节点&#xff0c;否则往上找&#xff0c;直到父节点为空或者当前节点是父节点的左子树&#xff0c;返回父节点 public class Code…

LeetCode面试题 17.24. Max Submatrix LCCI——压缩数组+动态规划

文章目录 一、题目二、题解 一、题目 Given an NxM matrix of positive and negative integers, write code to find the submatrix with the largest possible sum. Return an array [r1, c1, r2, c2], where r1, c1 are the row number and the column number of the subma…

2.12:C语言测试题

1.段错误&#xff1a;str指向NULL&#xff0c;不能把"hello world" 复制给NULL 2.报错&#xff1a;返回局部变量&#xff0c;本函数结束&#xff0c;非法访问&#xff0c;不一定输出hello world 3.地址传递&#xff0c;修改str&#xff0c;正常输出hello 4.可以输出…

npm ERR! code CERT_HAS_EXPIRED:解决证书过期问题

转载&#xff1a;npm ERR! code CERT_HAS_EXPIRED&#xff1a;解决证书过期问题_npm err! code cert_has_expired npm err! errno cert-CSDN博客 npm config set registry http://registry.cnpmjs.org npm config set registry http://registry.npm.taobao.org

中国电子学会2023年12月真题C语言软件编程等级考试一级(含解析答案)

中国电子学会考评中心历届真题(含解析答案) C语言软件编程等级考试一级 2023年12月 编程题五道 总分:100分一、数的输入和输出(20分) 输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。 时间限制: 1000 内存限制: 65536 输入 一行两个数,分…

【Linux 02】权限基本概念

文章目录 &#x1f308; Ⅰ 权限概念&#x1f308; Ⅱ 权限管理1. 文件访问者分类 (角色)2. 文件类型和访问权限 (事物属性)3. 文件权限值表示方法 &#x1f308; Ⅲ 权限修改1. chmod 设置文件访问权限2. chown 修改文件拥有者3. chgrp 修改文件或目录的所属组 &#x1f308; …

【数据分享】2014-2024年全国监测站点的逐月空气质量数据(15个指标\免费获取)

空气质量的好坏反映了空气的污染程度&#xff0c;在各项涉及城市环境的研究中&#xff0c;空气质量都是一个十分重要的指标。空气质量是依据空气中污染物浓度的高低来判断的。 我们发现学者王晓磊在自己的主页里面分享了2014年5月以来的全国范围的到站点的逐时空气质量数据&am…

接口测试工具开发文档

1 开发规划 1.1 开发人员 角 色 主要职责 负责模块 人员 备注 n xxx模块 xxx 1.2 开发计划 <附开发计划表> 1.3 开发环境和工具 开发工具 工具 作用 Notepad 编辑器 Perl 解释器 2 总体设计 设计思路&#xff1a;因为测试app和server。首先必须…

[C#]winform基于opencvsharp结合pairlie算法实现低光图像增强黑暗图片变亮变清晰

【低光图像增强介绍】 在图像处理领域&#xff0c;低光图像增强是一个具有挑战性的任务。由于光线不足&#xff0c;这些图像往往呈现出低对比度、高噪声和细节丢失等问题&#xff0c;严重影响了图像的视觉效果和后续分析的准确性。因此&#xff0c;开发有效的低光图像增强方法…

WSL安装Ubuntu22.04,以及深度学习环境的搭建

安装WSL 安装 WSL 2 之前&#xff0c;必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。 以管理员身份打开 PowerShell 并运行&#xff1a; dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart下载 Linux 内核更…

初识ONLYOFFICE 8.0:办公软件的革命性升级

引言 随着数字化时代的到来&#xff0c;办公软件已经成为我们日常生活和工作的重要组成部分。在这个充满竞争的市场中&#xff0c;ONLYOFFICE凭借其卓越的性能和功能&#xff0c;脱颖而出&#xff0c;成为许多企业和个人用户的优选。近期&#xff0c;ONLYOFFICE推出了全新的8.…

大数据技术之 Kafka

大数据技术之 Kafka 文章目录 大数据技术之 Kafka第 1 章 Kafka 概述1.1 定义1.2 消息队列1.2.1 传统消息队列的应用场景1.2.2 消息队列的两种模式 1.3 Kafka 基础架构 第 2 章 Kafka 快速入门2.1 安装部署2.1.1 集群规划2.1.2 集群部署2.1.3 集群启停脚本 2.2 Kafka 命令行操作…

http前生今世

HTTP/0.9&#xff0c;仅支持GET方法&#xff0c;并且响应中没有HTTP头信息&#xff0c;只有文档内容。 HTTP/1.0增加了对POST方法、状态码、HTTP头信息等的支持&#xff0c;这一版本也是广泛应用的历史性版本。 HTTP/1.1引入了持久连接&#xff08;Persistent Connections&…

m_sAppWord.CreateDispatch((L“Kwps.Application“), NULL) 失败问题

不使用管理员身份运行软件&#xff0c;只有adminsitrator用户装了WPS&#xff0c;在adminsitrator用户下运行管理员身份运行的程序才能正确载入WPS&#xff0c;其他用户下装WPS&#xff0c;只能用普通用户身份运行程序才能正确载入WPS

schema: classpath:db/schema.sql 自动建表失败的另一个原因

一、问题产生 想在springboot启动时&#xff0c;自动创建数据库&#xff0c;并执行建表语句&#xff0c;和数据插入语句。于是按照帖子配置了 schema: classpath:db/schema.sql 然而启动时&#xff0c;确报如下错误&#xff1a; com.baomidou.dynamic.datasource.DynamicDataSo…

【洛谷题解】P1303 A*B Problem

题目链接&#xff1a;A*B Problem - 洛谷 题目难度&#xff1a;普及- 涉及知识点&#xff1a;高精度 题意&#xff1a; 分析&#xff1a;直接套用模版即可 AC代码&#xff1a; #include<bits/stdc.h> using namespace std; char n[1000000],m[1000000]; int a[1000…

MIT-BEVFusion系列九--CUDA-BEVFusion部署2 create_core之参数设置

目录 加载命令行参数main 函数中的 create_core图像归一化参数体素化参数稀疏卷积网络参数真实世界几何空间参数 (雷达坐标系下体素网格的参数)解码后边界框的参数构建 bevfusion::Core 存储推理时需要的参数 本章开始&#xff0c;我们将一起看CUDA-BEVFusion的代码流程&#x…