@Ishishow betreibt eine kostenlose englische Word-Site E-tan.
Ich möchte jeden Tag an Letcode arbeiten, um meine Fähigkeiten als Programmierer zu verbessern und meine eigene Art der Lösung zu finden.
leetcode.com Dies ist die Praxis des Codierens von Interviews für Softwareentwickler. Insgesamt wurden mehr als 1.500 Codierungsfragen gestellt, und es scheint, dass in tatsächlichen Interviews häufig dieselben Fragen gestellt werden.
Einführung in Go Sprache + Algorithmus Ich werde es mit Golang und Python lösen, um mein Gehirn zu stärken. (Python ist schwach, aber erfahren)
Two Sum
--Probleminhalt (japanische Übersetzung)
Wenn ein Array von ganzen Zahlen und "Zahlen" das ganzzahlige "Ziel" angibt, * ist die Summe "Ziel" *. * Gibt * den Index der beiden Zahlen zurück, so dass er * wird.
Es kann davon ausgegangen werden, dass jeder Eingang *** genau \ * eine Lösung ** hat und das * gleiche * Element nicht zweimal verwendet werden kann.
Antworten können in beliebiger Reihenfolge zurückgegeben werden.
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]
Dieses Problem schien gut zu sein, wenn ich dem Wörterbuchtyp einen Wert zuwies und den Vorgang beendete, als (Zielwert) vorhanden war.
Übrigens habe ich die Schleifenverarbeitung bei der vollständigen Suche zuerst zweimal beschrieben, aber ich habe einen RunTimeError erhalten und die Antwort gesehen. .. ..
Python-Looping ist langsam. ..
--Antwortcode
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
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
Da ein Fehler aufgetreten ist, war auch die schmerzhafte Verarbeitung der Einstellung von a = len (nums) leer, sodass ich sie im Wörterbuchtyp umgeschrieben habe. .. ..
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
}
Bei Go war die Ausführungszeit völlig anders!
Gründe, make zu verwenden
Wenn Sie keinen Anfangswert für Maps angeben, wird die Variable mit "nil (nil map)" initialisiert.
nil map
kann keine Elemente speichern. Wenn Sie Elemente speichern möchten, müssen Sie die Map initialisieren.
idx, ok := m[target-v]
Wenn es diesen Wert gibt, wird True in ok eingegeben.
Go verwendet häufig Slices, da das Array eine feste Länge hat.
Da die Schreibmethode von Go nicht eindeutig ist, mache ich es während der Untersuchung, aber es scheint, dass ich beträchtliche Fähigkeiten erlangen werde, wenn ich dies beende!
[Go] Grundlegende Grammatik ⑤ (Assoziative Anordnung / Bereich)
Go language: Zusammenfassung zum Erstellen verschiedener Karten