Python求子数组和的所有元素(附Demo)

目录

  • 前言
  • 1. 暴力求解
  • 2. 前缀和哈希表
  • 3. 滑动窗口

前言

工作需要,对应需要优化查找子数组和等于特定值的算法

对应的算法推荐:子数组相关题目

以下算法主要针对Python

1. 暴力求解

双重循环时间复杂度为 O(n2)

def subarrays_with_sum_equal_k(nums, k):result = []n = len(nums)for start in range(n):current_sum = 0for end in range(start, n):current_sum += nums[end]if current_sum == k:result.append(nums[start:end + 1])return result# 示例用法
nums = [10, 2, 2, 5, 4]
k = 4
result = subarrays_with_sum_equal_k(nums, k)print("Subarrays with sum equal to {}:".format(k))
for subarray in result:print(subarray)

截图如下所示:

在这里插入图片描述

如果是乘积,注意差异之处:

def subarrays_with_product_equal_k(nums, k):result = []n = len(nums)for start in range(n):prod = 1for end in range(start, n):prod *= nums[end]if prod == k:result.append(nums[start:end+1])elif prod > k:breakreturn result# 示例用法
nums = [10, 2, 2, 5, 4]
k = 20
result = subarrays_with_product_equal_k(nums, k)print("Subarrays with product equal to {}:".format(k))
for subarray in result:print(subarray)

2. 前缀和哈希表

时间复杂度为O(n)

def subarrays_with_sum_equal_k(nums, k):result = []prefix_sum = 0 # 用于计算到当前元素的前缀和prefix_sum_map = {0: [-1]}  # 使用哈希表存储前缀和及其索引列表for i, num in enumerate(nums):prefix_sum += numif (prefix_sum - k) in prefix_sum_map:for start in prefix_sum_map[prefix_sum - k]:result.append(nums[start + 1:i + 1])if prefix_sum in prefix_sum_map:prefix_sum_map[prefix_sum].append(i)else:prefix_sum_map[prefix_sum] = [i]return result# 示例用法
nums = [10, 2, -2, -20, 10]
k = -10
result = subarrays_with_sum_equal_k(nums, k)print("Subarrays with sum equal to {}:".format(k))
for subarray in result:print(subarray)

截图如下:

在这里插入图片描述

3. 滑动窗口

不适用于负数还有浮点小数的情况

def subarrays_with_sum_equal_k(nums, k):result = []current_sum = 0 # 存储当前窗口内元素的和start = 0 # 滑动窗口的起始位置for end in range(len(nums)):current_sum += nums[end]while current_sum > k and start <= end:current_sum -= nums[start]start += 1if current_sum == k:result.append(nums[start:end+1])return result# 示例用法
nums = [10, 2, 2, 5, 4]
k = 10
result = subarrays_with_sum_equal_k(nums, k)print("Subarrays with sum equal to {}:".format(k))
for subarray in result:print(subarray)

截图如下:

在这里插入图片描述

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

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

相关文章

PostgreSQL如何使修改的参数生效

PostgreSQL如何使修改的参数生效 在 PostgreSQL 中&#xff0c;配置参数的更改往往需要不同的方式来使其生效。根据参数的不同&#xff0c;它们的生效方式可能有所区别&#xff0c;例如&#xff1a; 立即生效&#xff1a;某些参数可以通过会话级别的设置即时生效&#xff0c;…

HTML的常用标签

HTML&#xff08;补&#xff09; CSS选择器 元素选择器&#xff1a;指定一个标签给这个标签设置一个默认的样式。设置的样式对所有相同的标签都有用。 id选择器&#xff1a;我们可以给标签指定一个唯一的id&#xff0c;然后根据id可以在style标签中设置对应标签的样式元素。设…

【仿真建模-anylogic】FlowchartBlock原理解析

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-17 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 类图 2. 原理解析 2.1 核心函数 函数功能FlowchartBlock(Engine engine ,Agent owner, AgentList population )构造函数&#xff…

springboot-自定义properties文件

在springboot中&#xff0c;如果我们想加载外部的配置文件&#xff0c;但是又不想与其他的配置文件产生明显的耦合&#xff0c;那么我们可以把这些配置文件&#xff0c;单独弄成一个独立的配置文件&#xff0c;比如下面的配置文件&#xff0c;我们想把这些配置移动到user.prope…

CountDownLatch案例

CountDownLatch&#xff08;倒计时门闩&#xff09;是Java并发编程中的一个同步工具&#xff0c;其作用是允许一个或多个线程等待其他线程完成操作后再继续执行。具体来说&#xff0c;它通常用于以下场景&#xff1a; 等待其他线程完成某项操作&#xff1a; 一个或多个线程需要…

element-vue3-admin用router.push跳转新页面并刷新新页面

element-vue3-admin用router.push跳转新页面并刷新新页面 方法一&#xff1a;使用key属性强制刷新1.首先在invex.vue页面加上router-view标签对2.然后在add.vue页面加入如下代码 方法二&#xff1a;使用location.reload()在add.vue页面加入location.reload()强制浏览器刷新整个…

Day 24:100301. 构成整天的下标对数目II

Leetcode 100301. 构成整天的下标对数目II 给你一个整数数组 hours&#xff0c;表示以 **小时 **为单位的时间&#xff0c;返回一个整数&#xff0c;表示满足 i < j 且 hours[i] hours[j] 构成 **整天 **的下标对 i, j 的数目。 **整天 **定义为时间持续时间是 24 小时的 *…

在Spring Cloud项目中集成Springdoc OpenAPI生成OpenAPI 3文档的详细解析

在Spring Cloud项目中集成Springdoc OpenAPI生成OpenAPI 3文档的详细解析 在Spring Cloud项目中生成OpenAPI 3文档&#xff0c;可以使用Springdoc OpenAPI。Springdoc OpenAPI提供了一种简单的方法来生成符合OpenAPI 3规范的API文档。以下是详细的步骤和解析&#xff0c;展示如…

助力樱桃智能自动化采摘,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建果园种植采摘场景下樱桃成熟度智能检测识别系统

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经渗透到我们生活的方方面面&#xff0c;从智能家居到自动驾驶&#xff0c;再到医疗健康&#xff0c;其影响力无处不在。然而&#xff0c;当我们把目光转向中国的农业领域时&#xff0c;一个令人惊讶的…

虾皮平台API:获取商品买家评论数据

一、接口核心功能 在电商领域&#xff0c;买家评论对于商品的销售和商家的口碑至关重要。虾皮作为东南亚地区知名的电商平台&#xff0c;为商家提供了丰富的商品买家评论数据。为了方便商家获取这些数据&#xff0c;我们的API接口服务其核心功能就是获取商品买家评论数据信息。…

2024年6月17日--6月23日(渲染+ue独立游戏,)

工作要继续做渲染了&#xff0c;所以还是要把渲染搞一搞。 试过重点放在独立游戏上&#xff0c;有个indienova独立游戏团队是全职的&#xff0c;由于他们干了几个月&#xff0c;节奏暂时跟不上&#xff0c;紧张焦虑了。五一时也有点自暴自弃了&#xff0c;实在没必要&#xff…

docker和docker compose 部署

一. 将微服务运行在docker上&#xff1a; 1.新建一个空文件夹docker-demo&#xff0c;在里面再新建文件夹app&#xff0c;在app目录下新建一个名为Dockerfile的文件。 2.编写Dockerfile文件 3.构建镜像 4.启动镜像 5.可以访问了。 二使用Dockerfile构建微服务镜像 1.将j…

微信小程序录音和头像上传

录音&#xff1a; WXML <view class"box4">{{time}}</view> <button bind:tap"recorderBtn">开始录音</button> <button bind:tap"removeBtn">结束录音</button> <button bind:tap"playBtn"…

Spring (60)Spring WebFlux

Spring WebFlux 是 Spring 5.0 引入的新的响应式框架&#xff0c;用于构建异步的、非阻塞的和事件驱动的服务。WebFlux 使用了 Reactor 作为其响应式库&#xff0c;该库基于 Reactive Streams 规范。 核心概念 在深入了解之前&#xff0c;我们需要明确几个关键概念&#xff1…

Python | Leetcode Python题解之第160题相交链表

题目&#xff1a; 题解&#xff1a; class Solution:def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:A, B headA, headBwhile A ! B:A A.next if A else headBB B.next if B else headAreturn A

golang学习笔记——结构体嵌套接口

文章目录 结构体嵌套接口结构体嵌套结构体结构体实现接口接口嵌套接口结构体嵌套接口例子1例子2 总结参考资料 结构体嵌套接口 今天看k8s client-go源码时发现&#xff0c;结构体嵌套接口的现象。 // deployments implements DeploymentInterface type deployments struct {c…

gt9x双击唤醒屏幕

里面可以看到irq 和 rst的gpio引脚从设备树获取失败&#xff0c;排查设备树发现是属性名写错了&#xff1a; c &i2c1 {status "okay";goodix_ts5d {compatible "goodix,gt9xx";reg <0x5d>;// tp-size <89>;touchscreen-size-x <12…

Go Goroutine 究竟可以开多少?(详细介绍)

Go Goroutine 究竟可以开多少&#xff1f; Go语言因其高效的并发处理能力而备受欢迎&#xff0c;而Goroutine则是Go语言实现并发编程的核心。Goroutine比传统的线程更加轻量&#xff0c;允许开发者轻松地处理大量并发任务。那么&#xff0c;Go语言中的Goroutine究竟可以开多少…

6.1触发器的创建、删除和使用

6.1.1 触发器概述 触发器是一个被指定关联到表的数据库对象&#xff0c;与表的关系密切&#xff0c;不需要用户调用&#xff0c;在一个表的特定事件出现时将会被激活&#xff0c;此时某些MySql语句会自动执行。 触发器用于实现数据库的完整性&#xff0c;具有以下特点&#xff…

深入了解RSA加密算法

目录 前言 一、什么是RSA&#xff1f; 二、RSA加密的基本概念 1.非对称加密 2.密钥生成 3.加密和解密 三、RSA加密的工作原理 四、RSA的应用场景 五、RSA加密解密的实现 六、RSA算法的局限性及改进措施 前言 在当今的数字化时代&#xff0c;信息的安全性成为了人们关注…