网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 其他技术区 > 算法与数据结构 >

力扣算法题:1、两数之和

时间:2025-03-05 14:58

人气:

作者:admin

标签:

导读:题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你...

题目:

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]

链接地址:https://leetcode.cn/problems/two-sum/description/

虽然说这道题的难度标为简单,但是我个人也是花费了不少时间才做出来的,提交了好几次代码才勉强成型的算法。

我的思路是,如果遍历的过程中找到了被target的值减去元素的值的差在数组之中,且这个差值在数组中不是重复的,那么就直接通过index查找这两个值得下标。
如果差值在数组中重复,则先找出第一个元素并根据第一个元素的下标值把数组分成两个小的数组,再从第二个小数组中找到这个值的下标值并加上第一个小数组的长度,那么就会等于原有数组的下标值

nums = [2,7,11,16]
nums2 = [4,9,9]
target = 18

class Solution(object):
    def twoSum(self, nums, target):
        # 遍历给出的数组
        for i in nums:
            # 如果数组中能组成target的值都是唯一的
            if target - i in nums and target != i * 2:
                return nums.index(i),nums.index(target - i)
            # 如果组成target的值不唯一,则以第一个值为分割点把数组分成两段
            # 再用第二段找出第二个值
            elif nums.count(target-i) > 1:
                first = nums[:nums.index(i)+1]
                last = nums[len(first):]
                return first.index(i) , len(first)+last.index(i)

factor = Solution()
print('第一个数组的可能性组合:',factor.twoSum(nums,target),
	'\n第二个数组的可能性组合:',factor.twoSum(nums2,target))

result:
>>>第一个数组的可能性组合: (0, 3) 
   第二个数组的可能性组合: (1, 2)
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信