Python – 两数之和

Python – 两数之和给定列表a和一个目标值target,求列表中两数之和为target的值的索引;a=[1,5,6,8,9,4,5,6,3,2,1,7,5,6,9,8,4,5,6,2,1,0,1,2,0,1,2,5,9,10]b=[11,55,88,99,66,4,77,33,22,1,6,12,35]穷举(适应性强)defx(nums,target):result=[]…

大家好,又见面了,我是你们的朋友全栈君。

给定列表a和一个目标值target,求列表中两数之和为target的值的索引;

a = [1,5,6,8,9,4,5,6,3,2,1,7,5,6,9,8,4,5,6,2,1,0,1,2,0,1,2,5,9,10]
b = [11,55,88,99,66,4,77,33,22,1,6,12,35]



穷举(适应性强) 

def x(nums,target):
    result = []
    for i in range(len(nums)):
        for j in range(i+1,len(nums)):
            if nums[i]+nums[j] == target:
                result.append((i+1,j+1))
    return result
#print(x(b,10))

双指针(仅限于非重复有序列表的查询)

def y(nums,target):
    result = []
    start = 0
    end = len(nums)-1
    while start < end:
        if nums[start] + nums[end] == target:
            result.append((start+1,end+1))
            end -= 1
            start += 1
        elif nums[start] + nums[end] > target:
            end -= 1
        elif nums[start] + nums[end] < target:
            start += 1
    return result
# print(y(sorted(b),10))

哈希字典查找(仅限于非重复列表的查询)

def z(nums,target):
    result = []
    dict_y = {}
    for i in range(len(nums)):
        m = nums[i]
        if target-m in dict_y:
            result.append((dict_y[target-m]+1,i+1))
        dict_y[m] = i
    return result
#print(z(b,10))

使用字典进行存储(仅限于非重复列表的查询)

def h(nums,target):
    result = []
    xxx = []
    for i in range(len(nums)):
        if target-nums[i] in result:
            xxx.append([result.index(target-nums[i])+1,i+1])
        else:
            result.append(nums[i])
    return xxx
            
print(h(b,10))

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135578.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 最详细的Vuex教程

    最详细的Vuex教程最详细的Vuex教程什么是Vuex?vuex是一个专门为vue.js设计的集中式状态管理架构。状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态。简单的说就是data中需要共用的属性。引入Vuex(前提是已经用Vue脚手架工具构建好项目)1、利用npm包管理工具,进行安装vuex。在控制命令行中输入下边的命令就可以了。npminstallvuex

    2022年6月9日
    31
  • Android Studio中使用Gradle打包

    Android Studio中使用Gradle打包

    2022年2月3日
    153
  • Grid Search 网格搜索 介绍「建议收藏」

    Grid Search 网格搜索 介绍「建议收藏」什么是GridSearch网格搜索?网格搜素是一种常用的调参手段,是一种穷举方法。给定一系列超参,然后再所有超参组合中穷举遍历,从所有组合中选出最优的一组超参数,其实就是暴力方法在全部解中找最优解。为什么叫网格搜索,因为假设有两个超参,每个超参都有一组候选参数。这两组候选参数可以两两组合,把所有组合列出来就是一个二维的网格(多个超参两两组合可以看作是岗高维空间的网格),遍历网格中的所有节点,选出最优解。所以叫网格搜索。…

    2022年10月21日
    5
  • 一阶惯性环节matlab编程_matlab一阶惯性环节

    一阶惯性环节matlab编程_matlab一阶惯性环节该楼层疑似违规已被系统折叠隐藏此楼查看此楼我照着网上的程序自己改出来的程序是这样的clc;clear;ts=0.001;%采样时间sys=tf(-53,[19926,100],’ioDelay’,540);%tf是传递函数,用来实现G(s);在自动控制领域经常用到,dsys=c2d(sys,ts,’z’);%把控制函数离散化,转化…

    2022年10月4日
    3
  • 金蝶java开发(金蝶中间件 开源)

    面试的是java开发岗1.首先是做一份笔试题,笔试题比较简单,主要是设计模式,sql查询,linux命令2.面试分3轮第一轮:1个面试官,总体答得还行比较全面的技术面试,包括了(1)jvm内存模型:堆栈,方法区,程序计数器,本地方法区,以及他们各种的作用(2)jvm垃圾回收算法:复制算法,标记-清除,标记-整理,以及他们使用的场景和大致的作用1)多线程:synchron…

    2022年4月15日
    169
  • php安装

    php安装

    2021年6月17日
    90

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号