Python练习之列表两数之和

列表两数之和
给定一个已按照非递减顺序排列的整数数组numbers,请你从数组中找出两个数满足相加之和等于target
函数应该以长度为2的整数数组的形式返回这两个数的下标值。numnbers的下标值从1开始,所以答案数组应当满足1<=answer[0]<answer[0]<=numbers.length
你可以假设每个输入只对应唯一的答案而且你不可以重复使用相同的元素
示例:
输入:numbers=[2,7,11,15],target=9
输出:[1,2]

提示:

1,numbers按照非递减顺序排列

2,仅存在一个有效答案

3,2<= numbers.length 

import time


class Solution(object):
    @staticmethod  # 修饰
    def twosum(numbers, target):  # 定义函数并传递参数
        d = {}  # 空字典
        size = 0  # 索引
        while size < len(numbers):  # 如果索引小于列表长度,控制迭代范围
            if not numbers[size] in d:  # 确保无重复元素,如果字典中没有则添加
                d[numbers[size]] = size + 1  # 按次向字典中添加key和value,字典的key是列表参数中的元素,value是元素在列表中的位置
                print('d=', d) # 打印当前字典
            print('target - numbers[size]=', target - numbers[size], 'size=', size)  # 打印当前差值及元素在列表中的位置
            if target - numbers[size] in d:  # 如果 差(target - numbers[size])在字典中
                if d[target - numbers[size]] < size + 1:  # 确认位置数据在有效区间,找到的数据在目前的数据位置(size+1)之前,因为是先添加的数据及位置,
                    """
                     避免出现一下情况:
                     输入:ns = [2, 11, 7, 15] target = 22
                     输出:[2,2]
                     """
                    answer = [d[target - numbers[size]], size + 1]  # 通过差值及字典找到第一个数的位置信息,size+1直接找到第二数的位置
                    return answer  # 返回列表
            size = size + 1
            time.sleep(1)


ns = [2, 11, 7, 15]  # 列表
tg = 9  # 目标和
st = Solution()
print(f'{tg}:',st.twosum(ns, tg))
print('---------------')

相关推荐

  1. Python练习列表之和

    2024-01-06 07:12:02       65 阅读
  2. Python算法题集_之和

    2024-01-06 07:12:02       60 阅读
  3. 1.之和

    2024-01-06 07:12:02       58 阅读
  4. leetcode-之和

    2024-01-06 07:12:02       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-06 07:12:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-06 07:12:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-06 07:12:02       82 阅读
  4. Python语言-面向对象

    2024-01-06 07:12:02       91 阅读

热门阅读

  1. docker-compose常用命令及.yaml配置模板

    2024-01-06 07:12:02       53 阅读
  2. ARM DMA使用整理

    2024-01-06 07:12:02       58 阅读
  3. uniapp使用tcp和udp的区别和例子

    2024-01-06 07:12:02       48 阅读
  4. 【深度学习程序实例】

    2024-01-06 07:12:02       51 阅读
  5. Vue_00001_CLI

    2024-01-06 07:12:02       47 阅读
  6. OSG显示模型的线程问题

    2024-01-06 07:12:02       55 阅读
  7. django related_query_name和related_name的区别

    2024-01-06 07:12:02       49 阅读
  8. Django文章标签推荐

    2024-01-06 07:12:02       50 阅读
  9. 左旋字符串与判断字符串左旋编程题

    2024-01-06 07:12:02       56 阅读