Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- go
- Programmers
- easy
- k8s
- 파이썬
- LeetCode
- kubernetes
- Codility
- java
- 백준
- GCP
- golang
- cpu scheduling
- Backjoon
- GKE
- docker
- Singleton Pattern
- 알고리즘
- Kotlin
- 그리디
- Python
- github
- Dynamic Programming
- mobaXTerm
- Observer Pattern
- KAKAO
- Top-down
- BubbleSort
- 피보나치
Archives
- Today
- Total
To Be Developer
[LeetCode] Two Sum ll - Input array is sorted 본문
class Solution(object):
def twoSum(self, nums, target):
"""
:type numbers: List[int]
:type target: int
:rtype: List[int]
"""
# 문제설명
# 오름차순으로 정렬된 배열이 있다
# numbers의 원소 2개를 중복되지 않게 골라 더한 값이
# target 일 때 원소의 index를 list로 return 하라
# 단, index는 1부터 시작한다.
'''
초기 접근법
단순하게 2중 for 문을 돌리면 될 것이라 생각을 하였다.
'''
'''
ln = len(nums)
for i in range(ln-1):
for j in range(i+1, ln):
if nums[i]+nums[j] == target:
return [i+1, j+1]
'''
# 하지만 run time limit 에 걸리게 된다.
# 별의 별 생각을 다하고 이것 저것 다 해보아도 안되어
# Discuss 에서 다른 사람이 작성한 코드를 보고 새로운 사고 방식을 보았다.
# nums 의 배열의 길이를 저장
ln = len(nums)
# 배열의 left index
left = 0
# 배열의 right index
right = ln - 1
# left index 가 right 보다 작을 때 까지 while문을 돌린다.
while left < right:
# nums[left] +nums[right] 가 target 보다 크면
# right index를 하나 감소시킨다.
if nums[left] + nums[right] > target:
right -= 1
# nums[left] + nums[right] < target 보다 작으면
# left index 를 증가시킨다.
elif nums[left] + nums[right] < target:
left += 1
# 만약 nums[left] + nums[right] 가 target 가 일치한다면
# index+1 씩해서 return 한다.
elif nums[left] + nums[right] == target:
return [left + 1, right + 1]
return [left + 1, right + 1]
if __name__ == '__main__':
numbers = [2, 7, 11, 15]
target = 9
sl = Solution().twoSum(numbers, target)
print(sl)
'알고리즘 > LeetCode' 카테고리의 다른 글
| [LeetCode] 189. Rotate Array.py (0) | 2019.03.08 |
|---|---|
| [LeetCode] 7. Reverse Integer (0) | 2019.03.06 |
| [LeetCode] 566. Reshape the Matrix (0) | 2019.03.04 |
| [LeetCode] 349. InterSection of Two Arrays (0) | 2019.03.03 |
| [LeetCode] 136. Single Number (0) | 2019.03.02 |