LeetCode 1. 두 개의 숫자 (파이썬)
1, 간단한 솔루션
루프 대법에 대한 가장 간단한 2 :
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
그러나 기능, 시간을 열거 쓰기하지 않도록주의 :
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
size = len(nums)
for i, m in enumerate(nums):
j = i+1
while j < size :
if nums[i] + nums[j] == target:
return [i, j]
else:
j+=1
최적화에 이용하여도 2 (다시 루프?)
파이썬 대법은 좋다 : 방법의 사용, 당신은 단지 for 루프는 (그러나 사실에서 파이썬이 우리를 도와 찾을 루프를 할) 문제를 해결할 수있을 것입니다 필요
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)):
if target-nums[i] in nums:
if i != nums.index(target-nums[i]):
return [i, nums.index(target-nums[i])]
파이썬 사전 3, (생각 알고리즘 해시 테이블)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
d = {}
for i in range(len(nums)):
a = target - nums[i]
if nums[i] in d:
return d[nums[i]],i
else:
d[a] = i
이해하는 생각 쓰기, 사전 D의 값 쌍 : 의미 {k 개의 V는} nums V의 범위에서 목표 위치 값을 만드는 것이 K입니다. (즉,시 nums [I] = K, nums [V] + NUM [I] = 목표).
사건 이후 상보 위치에서 주 사전 (값) 측을 통과하는 데 필요한 상보 번호 (키) nums 어레이의 엣지 nums 상보의 레코드 번호 = 전에 발견 될 때 나, 자신의 위치 (값)로 복귀하고 난 완료된다.