python如何实现数组元素两两相加
作者:逯小蓝 发布时间:2023-02-21 04:39:46
标签:python,数组,元素,相加
数组元素两两相加
count = 0
c2 = []
for i in range(len(c)):
if count == 0:
mm = c[i]
#print(mm)
#print(count)
if count == 1:
print(c[i])
value = c[i] + mm
c2 = np.append(c2,value)
count = 0
mm = 0
value = 0
continue
count = count + 1
c是原数组,我们设置一个count,当count=0时我们不操作,count=1时我们把当前元素与前一元素相加。
count=0其实相当于奇数,count=1相当于偶数
求数组中两两相加等于20的组合(Python实现)
题目
求数组中两两相加等于20的组合。
例:给定一个数组[1, 7, 17, 2, 6, 3, 14],这个数组中满足条件的有两对:17+3=20, 6+14=20。
解析
分为两个步骤:
先采用堆排序或快速排序对数组进行排序,时间复杂度为O(nlogn)。
然后对排序的数组分别从前到后和从后到前进行遍历, 时间复杂度为O(n)。
假设从前到后遍历的下标为begin,从后到前遍历的下标为end。
当arr[begin] + arr[end] < 20时,满足条件的数一定在[begin+1, end]之间;
当arr[begin] + arr[end] > 20时,满足条件的数一定在[begin, end-1]之间;
当arr[begin] + arr[end] = 20时,找到一组符合条件的数,剩下的组合一定在[begin-1, end-1]之间。
整个算法的时间复杂度为O(nlogn)。
Python实现
# -*- coding:utf-8 -*-
def quick_sort(arr, left, right):
"""快速排序"""
if left >= right:
return
low = left
high = right
p = arr[left]
while left < right:
while left < right and arr[right] >= p:
right -= 1
arr[left] = arr[right]
while left < right and arr[left] <= p:
left += 1
arr[right] = arr[left]
arr[left] = p
quick_sort(arr, low, left-1)
quick_sort(arr, left+1, high)
def find_sum(arr, sum):
"""寻找数组中相加等于sum的组合"""
quick_sort(arr, 0, len(arr) - 1)
begin, end = 0, len(arr) - 1
while begin < end:
if arr[begin] + arr[end] < sum:
begin += 1
elif arr[begin] + arr[end] > sum:
end -= 1
else:
print('%s %s' % (arr[begin], arr[end]))
begin += 1
end -= 1
if __name__ == '__main__':
arr = [1, 7, 17, 2, 6, 3, 14]
find_sum(arr, 20)
来源:https://blog.csdn.net/weixin_44843629/article/details/114366383


猜你喜欢
- 本文实例为大家分享了python3实现猜数字游戏的具体代码,供大家参考,具体内容如下需求目标:需求:猜数字游戏1: 开始游戏产生一个1~10
- 有些框架本身就支持多配置文件,例如Ruby On Rails,nodejs下的expressjs。python下的Flask虽然本身支持配置
- 迪杰斯特拉(Dijkstra)算法主要是针对没有负值的有向图,求解其中的单一起点到其他顶点的最短路径算法。1 算法原理迪杰斯特拉(Dijks
- 解决案例一:今天公司服务器上所有的网站都出现问题,有的打开没有数据,有的直接是空白。我的第一反应就是数据库挂了。打开远程,进了系统,serv
- 一、HandlerSocket是什么?HandlerSocket是akira higuchi写的一个MySQL的插件。以MySQL Daem
- 写ASP程序时,一般情况总是使用的VBScript,不过也不只是这一种选择,也可以用JScript。但在用JScript作为ASP的语言时,
- 1.电脑已经搭建python环境2.深入到需要传输的文件目录下,此处以分享 nemo-huiyuanfei 文件为例3.在路径栏输入 cmd
- 创建Spring Boot应用在基于Spring来重构JSP应用之前,我们先引入Spring Boot,使之成为一个Spring Boot应
- Flask是一个用Python编写的Web应用程序框架,Flask是python的web框架,最大的特征是轻便,让开发者自由灵活的兼容要开发
- gitignore是什么文件就是git软件要忽略的文件列表,如果要忽略某些文件,,在Git工作区的根目录下创建一个特殊的.gitignore
- <?php /* *文件名:linearList.php * 功能:数据结构线性表的顺序存储实现 * author:黎锦焕 * @co
- 视频对象提取与其说是视频对象提取,不如说是视频颜色提取,因为其本质还是使用了OpenCV的HSV颜色物体检测。下面话不多说了,来一起看看详细
- 调度和锁定在很多客户一起查询数据表时,如果使客户能最快地查询到数据就是调度和锁定做的工作了。在MySQL中,我们把select操作叫做读,把
- 基础知识使用框架的优点稳定性和可扩展性强可以降低开发难度,提高了开发效率Flask诞生于2010年,是Armin ronacher用Pyth
- 先来定义分页语句将要用到的几个参数:int currentPage ; //当前页int pageRecord ; //每页显示记录数以之前
- BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_i
- 本文实例为大家分享了JavaScript实现多层颜色选项卡嵌套的具体代码,供大家参考,具体内容如下这是学JavaScript时候的一个作业,
- 如何用表单在线建立目录?很简单,两个文件就搞定了:creatfolder.htm' 表单文件<form n
- jinja2简介特征沙箱中执行强大的 HTML 自动转义系统保护系统免受 XSS模板继承及时编译最优的 python 代码可选提前编译模板的
- 引言本文以Python3.9.1读取data.xlsx中包含的西瓜数据集3.0数据为例,数据集如下:编号色泽根蒂敲声纹理脐部触感密度含糖率好