@Ishishow is running a free English word site E-tan.
I would like to work on letcode every day to improve my ability as a programmer and give my own way of solving it.
leetcode.com This is the practice of coding interviews for software developers. A total of more than 1,500 coding questions have been posted, and it seems that the same questions are often asked in actual interviews.
Introduction to Go language + algorithm I will solve it with Golang and Python to strengthen my brain. (Python is weak but experienced)
Two Sum
--Problem content (Japanese translation)
If an array of integers and an integer are given
nums`` target, * the sum istarget*. * Returns * an index of two numbers so that it becomes *.You can assume that each input has *** exactly \ * one solution **, and you cannot use the * same * element twice.
Answers can be returned in any order.
Example 1:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Output: 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]
This problem seemed to be good if I assigned a value to the dictionary type and finished the process when (Target-value) existed.
By the way, I first described the loop processing twice in the full search, but I got a RunTimeError and saw the answer. .. ..
Python looping is slow. ..
--Answer code
class Solution(object):
def twoSum(self, nums, target):
d = {}
for i in range(len(nums)):
if (target - nums[i]) in d:
return [d[target - nums[i]],i]
else:
d[nums[i]] = i
return 0
--My first code (gets RunTimeError)
class Solution(object):
def twoSum(self, nums, target):
a = len(nums)
for i in range(a):
j = i+1
while j!=a:
if nums[i] + nums[j] == target:
return [i,j]
j +=1
return 0
Since an error occurred, the painful processing of setting a = len (nums) was also empty, so I rewrote it in dictionary type. .. ..
--I'll write it in Go too!
func twoSum(nums []int, target int) []int {
m := make(map[int]int)
for i, v := range nums {
idx, ok := m[target-v]
if ok {
return []int{idx, i}
}
m[v] = i
}
return nil
}
With Go, the execution time was completely different!

--Self memo (Go)
Reasons to use make
If you do not specify an initial value for Maps (associative array), the variable is initialized to nil (nil map).
nil map cannot store elements, and if you want to store elements, you need to initialize the map.
idx, ok := m[target-v]
If there is that value, True is entered in ok.
Go often uses slices because the array has a fixed length.
Since the writing method of Go is ambiguous, I am doing it while investigating, but it seems that if I finish this, I will gain considerable ability!
[Go] Basic Grammar ⑤ (Associative Array / Range)
Go language: Summary of how to make various maps
Recommended Posts