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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue toast提示_vue弹出页面

    vue toast提示_vue弹出页面创建一个message.vue组件<template><divclass=”wrap”v-if=”showWrap”:class=”showContent?’fadein’:’fadeout'”><i:class=”iconState?’success’:’wrong'”></i>…

    2022年9月2日
    4
  • 简易频谱分析仪_罗德与施瓦茨频谱仪使用指南

    简易频谱分析仪_罗德与施瓦茨频谱仪使用指南头部导航end中间1简易频谱分析仪[2005年电子大赛二等奖]文章来源:凌阳科技教育推广中心作者:国防科技大学李楠刘亮李俊发布时间:2006-8-2912:14:43摘要:本设计以凌阳16位单片机SPCE061A为核心控制器件,配合XilinxVirtex-IIFPGA及Xil

    2022年8月11日
    6
  • 微信小程序 – 80个实用的微信小程序项目实例

    微信小程序 – 80个实用的微信小程序项目实例wx-gesture-lock微信小程序的手势密码WXCustomSwitch微信小程序自定义Switch组件模板WeixinAppBdNovel微信小程序demo:百度小说搜索shitoujiandaobu小程序:石头剪刀布(附代码说明)audiodemo微信小程序开发之视频播放器Video弹幕弹幕颜色自定义star微信小程序开发之五星评分switchCity微信小程序开发之城市选择器城市切换huadong_del微信小程序滑动删除效果jianhang_menu

    2022年6月12日
    39
  • vs 安装包_vs离线安装包

    vs 安装包_vs离线安装包VS安装包注册com组件VS安装包注册com组件1.把你的com组件加入到打包程序。 2.在打包程序中找到该com组件,点击属性。在属性中有Register项,把值选择为vsdrfCOM即可。

    2022年10月13日
    1
  • CoreOS裸机iso安装和相关配置

    CoreOS裸机iso安装和相关配置

    2022年4月3日
    182
  • Linux常用打包压缩命令

    Linux常用打包压缩命令简介Linux上常用的压缩/解压工具,介绍了zip、rar、tar的使用。文件打包和压缩Linux上的压缩包文件格式,除了Windows最常见的*.zip、*.rar、.7z后缀的压缩文件,还有.gz、.xz、.bz2、.tar、.tar.gz、.tar.xz、tar.bz2文件后缀名说明*.zipzip程序打包压缩的文件*.rarrar程序压…

    2022年5月6日
    37

发表回复

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

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