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
0
投稿
猜你喜欢
- 内容摘要:为什么要什么XML文件:其优势就是处理该XML数据的文档可以是静态文档,比如HTML文件通过Javascript、XMLDOM来解
- (注:在看到大家如此关注JS里头的这几个对象,我试着把原文再修改一下,力求能再详细的阐明个中意义 2007-05-21)在提到上述的概念之前
- 对于Python而言代码缩进是一种语法,Python没有像其他语言一样采用{}或者begin...end分隔代码块,而是采用代码缩进和冒号来
- 这篇文章主要介绍了Python统计时间内的并发数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 利用Python,将多个excel文件合并为一个文件思路利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用
- 本文实例讲述了scrapy自定义pipeline类实现将采集数据保存到mongodb的方法。分享给大家供大家参考。具体如下:# Standa
- 如何显示随机信息?使用了asp的randomize来创造随机数,select case来显示自定义信息。具体代码如下:<html>
- 前言:之前,我写笔记的工具一直都是 notion,而且没有写博客的习惯。但是一是由于 notion 的服务器在
- 一、PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语
- 一、INSERT和REPLACEINSERT和REPLACE语句的功能都是向表中插入新的数据。这两条语句的语法类似。它们的主要区别是如何处理
- 字符函数——返回字符值这些函数全都接收的是字符族类型的参数(CHR除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR
- 挖坟 交互设计(Interaction Design)产生于二十世纪八十年代,在1984年一次设计会议上,大名鼎鼎的英国交互设计师比尔·莫格
- 如果说亲密性原则是对元素的归类组合,是将元素之间逻辑理解上的差异在视觉上表现出来,是属于信息分类的话,那么对齐原则即是在视觉上串起这些差异化
- Asp中Server.ScriptTimeOut属性需要注意的一点Server.ScriptTimeout?这个属性给定Asp脚本执行的最大
- 使用python写爬虫时,优选selenium,由于PhantomJS因内部原因已经停止更新,最新版的selenium已经使用headles
- sql语句中默认是不区分大小写的,所以语句: Sql代码 SELECT * FROM RecEngineBizInfo WHERE RecE
- 在做手机开发时,经常碰到一些比较耗时的操作,这个时候进度条就开始派上用场了。这个demo展示了ProgressBar进度条和Progress
- 什么是特殊方法?当我们在设计一个类的时候,python中有一个用于初始化的方法$__init__$,类似于java中的构造器,这个就是特殊方
- 1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安
- ASP中转换unicode编码为GB编码方法:<% function urldecode(encodestr)