---
# System prepended metadata

title: LeetCode 1. Two Sum
tags: [leetcode, python]

---

# LeetCode 1. Two Sum
###### tags: `leetcode` `python`
## Two Sum

Question:  
Given an array of integers, return indices of the two numbers such that they add up to a specific target.   

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

Example:  
```shell
Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
```
## mycode
* 第一次提交
    ```python
    class Solution:
        def twoSum(self, nums: List[int], target: int) -> List[int]:            
            for o_idx in range(len(nums)):
                for i_idx, num in enumerate(nums):
                    # 當內外索引相同的時候就不處理
                    if o_idx == i_idx:
                        continue

                    if nums[o_idx] + num == target:
                        return [o_idx, i_idx]
    ```    
    這次提交之後得到Time Limit Exceeded的失敗訊息，第一次做才發現，原來不是只有帳面上的需求..    

* 第二次提交
    ```python
    class Solution:
        def twoSum(self, nums: List[int], target: int) -> List[int]:
            for idx, num in enumerate(nums):
                if target - num in nums[idx + 1: ]:
                    return [idx, nums[idx + 1: ].index(target - num) + idx + 1]
    ```
    這次提交想法上是以減少來找值是否存在list之內，如果存在就取得該值的索引之後回傳
    

## result
Runtime: 884 ms, faster than 24.83% of Python3 online submissions for Two Sum.  
Memory Usage: 13.8 MB, less than 75.81% of Python3 online submissions for Two Sum.  