J'ai essayé LeetCode tous les jours 1. Two Sum (Python, Go)

introduction

@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.

Qu'est-ce que Leetcode

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é)

Premier jour

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!

Articles référencés

[Go] Grammaire de base ⑤ (Tableau / plage associative)

Go language: Résumé de la création de différentes cartes

Recommended Posts

J'ai essayé LeetCode tous les jours 1. Two Sum (Python, Go)
J'ai essayé LeetCode tous les jours 9. Palindrome Number (Python, Go)
J'ai essayé LeetCode tous les jours 14.Le plus long préfixe commun (Python, Go)
J'ai essayé LeetCode tous les jours 26. Supprimer les doublons du tableau trié (Python, Go)
J'ai essayé Grumpy (allez exécuter Python).
J'ai essayé d'exécuter faiss avec python, Go, Rust
J'ai essayé Python> décorateur
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé l'extension C de Python
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai essayé de toucher Python (installation)
J'ai essayé webScraping avec python.
J'ai essayé d'utiliser Thonny (Python / IDE)
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai essayé la notification de ligne en Python
J'ai essayé la communication SMTP avec Python
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python
J'ai essayé d'implémenter PLSA dans Python 2
Entrée standard Python3 que j'ai essayé de résumer
J'ai essayé d'utiliser l'optimisation bayésienne de Python
J'ai essayé le rendu non réaliste avec Python + opencv
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé la récurrence avec Python ② (séquence de nombres Fibonatch)
J'ai essayé d'implémenter PPO en Python
Python: j'ai essayé le problème du voyageur de commerce
Livre Wrangle x Python Je l'ai essayé [1]
Mayungo's Python Learning Episode 8: J'ai essayé l'entrée
[Python] J'ai essayé de calculer TF-IDF régulièrement
J'ai essayé de gratter la météo Yahoo (édition Python)
J'ai essayé de toucher Python (syntaxe de base)
J'ai essayé le framework de test Python Tornado
# J'ai essayé quelque chose comme Vlookup avec Python # 2
J'ai essayé d'exécuter deux PWM matériels Jetson Nano à partir de la bibliothèque Jetson.GPIO Python.
[EN DIRECT] J'ai essayé de fournir les heures de lever et de coucher du soleil dans tout le pays chaque jour
Python Jour 1
[Baseball Hack] J'ai essayé de copier le script d'acquisition de données de score et de note Python MLB avec Go en une demi-journée
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé des centaines de millions de SQLite avec python
vprof - J'ai essayé d'utiliser le profileur pour Python