twoSum Algorithm : How to improve this?

前端 未结 22 2518
礼貌的吻别
礼貌的吻别 2021-02-06 01:38

I felt like doing an algorithm and found this problem on leetcode

Given an array of integers, find two numbers such that they add up to a specific target num

22条回答
  •  没有蜡笔的小新
    2021-02-06 01:50

    This is my python solution

    class Solution:
        def twoSum(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: List[int]
            """
    
            copy_dict = {}
            for pos in range(0, len(nums)):
                if nums[pos] not in copy_dict.keys():
                    copy_dict[nums[pos]] = [pos]
                else:
                    copy_dict[nums[pos]].append(pos)
    
            def get_sum_indexes(sorted_array, target):
                right_pointer = len(sorted_array) - 1
                left_pointer = 0
                while left_pointer < len(sorted_array) or right_pointer > 0:
                    if sorted_array[right_pointer] + sorted_array[left_pointer] == target:
                        return [sorted_array[left_pointer], sorted_array[right_pointer]]
                    elif sorted_array[right_pointer] + sorted_array[left_pointer] > target:
                        right_pointer -= 1
                    elif sorted_array[right_pointer] + sorted_array[left_pointer] < target:
                        left_pointer += 1
                return None
            sum_numbers = get_sum_indexes(sorted(nums), target)
            if len(copy_dict[sum_numbers[0]]) == 1:
                answer_1 = copy_dict[sum_numbers[0]][0]
            else:
                answer_1 = copy_dict[sum_numbers[0]][0]
    
            if len(copy_dict[sum_numbers[1]]) == 1:
                answer_2 = copy_dict[sum_numbers[1]][0]
            else:
                answer_2 = copy_dict[sum_numbers[1]][1]
            return sorted([answer_1, answer_2])
    
    print(Solution().twoSum(nums=[-1, -2, -3, -4, -5], target=-8))
    print(Solution().twoSum(nums=[-3, -3], target=-6))
    

提交回复
热议问题