[leetcode] 1. Two Sum
  TEZNKK3IfmPf 2024年07月26日 40 0

题目

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have *exactly* one solution, and you may not use the same element twice.

You can return the answer in any order.

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]

Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

Constraints:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • Only one valid answer exists.

Follow-up: Can you come up with an algorithm that is less than O(n2) time complexity?

思路

将数组转为包含索引的列表后排序,随后使用双指针解决。

代码

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        nums = sorted(enumerate(nums), key=lambda x: x[1])
        l, r = 0, len(nums)-1
        while l < r:
            if nums[l][1]+nums[r][1] > target:
                r -= 1
            elif nums[l][1]+nums[r][1] < target:
                l += 1
            else:
                return [nums[l][0], nums[r][0]]
        return [-1, -1]
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年07月26日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年07月27日   49   0   0 java算法开发语言
TEZNKK3IfmPf