Il semble que des tests de codage soient menés à l'étranger lors d'entretiens d'ingénieurs, et dans de nombreux cas, l'essentiel est de mettre en œuvre des fonctions et des classes spécifiques en fonction du thème.
En guise de contre-mesure, il semble qu'un site appelé Let Code prendra des mesures.
Un site qui forme une puissance algorithmique capable de résister à des tests de codage dont on parle très tôt.
Je pense qu'il vaut mieux avoir la puissance de l'algorithme d'un être humain, donc je vais résoudre le problème de manière irrégulière et écrire la méthode que j'ai pensé à ce moment-là sous forme de mémo.
Table de codes Leet commençant à zéro
Dernière fois Leet Code Day 16 "344. Reverse String" commençant à zéro
En gros, je voudrais résoudre l'acceptation facile par ordre décroissant.
Le niveau de difficulté est facile. C'est un extrait des 100 questions les plus appréciées.
Trouvez l'élément qui constitue la majorité dans le tableau de taille «n» donné. On suppose que le tableau n'est pas vide et que la majorité des éléments sont toujours présents.
Example 1: Input: [3,2,3] Output: 3
Example 2: Input: [2,2,1,1,1,2,2] Output: 2
Les deux renvoient la majorité.
Il est bon d'utiliser la fonction intégrée count
, mais Python a une fonction Counter
, donc je pense que c'est plus facile à utiliser.
La différence entre les deux est
# count:Vous pouvez l'utiliser sans importer. Comptez le nombre de chaque élément.
nums = [2,2,1,1,1,2,2]
print(nums.count(0))
# 0
print(nums.count(1))
# 3
print(nums.count(2))
# 4
#counter:Il ne peut pas être utilisé sans importation. Les éléments peuvent être acquis par ordre d'apparition décroissant.
from collections import Counter
nums = [2,2,1,1,1,2,2]
num = collections.Counter(nums)
print(num)
# Counter({2: 4, 1: 3})
print(type(c))
# <class 'collections.Counter'>
print(issubclass(type(c), dict))
# True
Vous pouvez voir la différence. Cette fois, il suffit de renvoyer celui qui occupe la majorité, nous allons donc envisager d'utiliser counter
.
from collections import Counter
class Solution:
def majorityElement(self, nums: List[int]) -> int:
ans = collections.Counter(nums)
return ans.most_common(1)[0][0]
#Runtime: 172 ms, faster than 79.63% of Python3 online submissions for Majority Element.
# Memory Usage: 15.1 MB, less than 7.14% of Python3 online submissions for Majority Element.
Au début, vous pouvez utiliser ans.keys () [0], non? J'ai pensé, mais le dictionnaire serait une erreur ... Je l'ai donc écrit simplement en utilisant la méthode most_common () incluse dans Counter (renvoyant une liste de tapples sous la forme de (élément, nombre d'occurrences) classés par ordre de nombre d'occurrences).
J'ajouterai s'il existe une autre bonne méthode.
Recommended Posts