@Ishishow gère un site de mots anglais gratuit E-tan.
J'aimerais travailler quotidiennement sur letcode pour améliorer mes capacités de programmeur et donner ma propre façon de le résoudre.
leetcode.com C'est la pratique de coder des interviews pour les développeurs de logiciels. Au total, plus de 1 500 questions de codage ont été affichées, et il semble que les mêmes questions soient souvent posées lors d'entretiens réels.
Introduction au langage Go + Algorithme Je vais le résoudre avec Golang et Python pour renforcer mon cerveau. (Python est faible mais expérimenté)
Two Sum
Si un tableau d'entiers et de «nums» étant donné les entiers «target», * la somme est «target» *. * Renvoie * l'index des deux nombres pour qu'il devienne *.
On peut supposer que chaque entrée a *** exactement \ * une solution **, et le * même * élément ne peut pas être utilisé deux fois.
Les réponses peuvent être retournées dans n'importe quel ordre.
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]
Ce problème me semblait bon si j'attribuais une valeur au type de dictionnaire et terminais le processus lorsque (valeur cible) existait.
À propos, j'ai d'abord décrit le traitement de la boucle deux fois dans la recherche complète, mais j'ai obtenu une RunTimeError et j'ai vu la réponse. .. ..
La boucle Python est lente. ..
--Code de réponse
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
--Mon premier code (obtient 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
Puisqu'une erreur s'est produite, le traitement douloureux de la définition de a = len (nums) était également vide, je l'ai donc réécrit en type dictionnaire. .. ..
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
}
Avec Go, le temps d'exécution était complètement différent!
-Self memo (Go)
Raisons d'utiliser make
Si vous ne spécifiez pas de valeur initiale pour Maps, la variable est initialisée à nil (nil map)
.
nil map
ne peut pas stocker d'éléments, et si vous voulez stocker des éléments, vous devez initialiser la carte.
idx, ok := m[target-v]
S'il y a cette valeur, True est entré dans ok.
Go utilise souvent des tranches car le tableau a une longueur fixe.
Comme la méthode d'écriture de Go est ambiguë, je le fais en enquêtant, mais il semble que si je termine cela, je gagnerai des capacités considérables!
[Go] Grammaire de base ⑤ (Tableau / plage associative)
Go language: Résumé de la création de différentes cartes
Recommended Posts