Python算法题集_两数之和

发布时间:2024年01月18日

本文为Python算法题集之一的代码示例

题目:两数之和

说明:给定一个整数列表(数值不重复) nums 和一个整数目标值 target,请在该数组中找出和为目标值 target 的整数对,并返回数组下标对

  1. 简单版【只有一个两数和等于目标值】

    # 简单版【给定一个不重复整数列表 nums 和一个整数目标值 target,请在该数组中找出和为目标值 target  的整数对,并返回这个数组下标对】
    def twoSum(nums: list, target: int) -> list:
        for i in range(len(nums)):
            tmpA = nums[i]
            valueB = target - tmpA
            if valueB in nums:
                tmpIdxb = nums.index(valueB)
                if tmpIdxb == i:
                    continue
                return [i, nums.index(valueB)]
    
    
    numsa = [1,2,3,4,5,6,7,8,9,10,11,0,12,13,14]
    print('{}中整数和为{}的元素唯一下标对为{}'.format(numsa, 25, twoSum(numsa, 25)))
    # 运行结果
    # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 12, 13, 14]中整数和为25的元素唯一下标对为[10, 14]
    
  2. 加强版【有多个两数和等于目标值】

    # 加强版【给定一个不重复的整数列表 nums 和一个整数目标值 target,请在该数组中找出所有和为目标值 target  的整数对,并返回它们的数组下标对】
    def twoSumList(nums: list, target: int) -> list:
        result = []
        for i in range(len(nums)):
            # 避免出现重复的数组下标对
            if i in result:
                continue
    
            tmpA = nums[i]
            valueB = target - tmpA
            if valueB in nums:
                tmpIdxb = nums.index(valueB)
                if tmpIdxb == i:
                    continue
                result = result + [i, nums.index(valueB)]
    
        return result
        
    numsa = [1,2,3,4,5,6,7,8,9,10,11,0,12,13,14]
    print('{}中整数和为{}的元素所有下标对为{}'.format(numsa, 11, twoSumList(numsa, 11)))
    # 运行结果
    # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 12, 13, 14]中整数和为11的元素所有下标对为
    # [0, 9, 1, 8, 2, 7, 3, 6, 4, 5, 10, 11]
    

    一日练,一日功,一日不练十日空

    may the odds be ever in your favor ~

文章来源:https://blog.csdn.net/weixin_36928396/article/details/135681757
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。