@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