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 d'implémenter 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 aux 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 30 à partir de zéro "234. Palindrome Linked List"
En gros, je voudrais résoudre l'acceptation facile par ordre décroissant.
Twitter Je le fais.
581. Shortest Unsorted Continuous Subarray Le niveau de difficulté est facile. Extrait des 100 questions les plus appréciées.
Le problème est donné un tableau d'entiers. Si vous triez ce tableau dans l'ordre croissant, recherchez un sous-tableau contigu qui peut trier le tableau entier dans l'ordre croissant. Le problème est de trouver le sous-tableau le plus court parmi eux et de renvoyer sa longueur.
Prenons un exemple.
Example 1: Input: [2, 6, 4, 8, 10, 9, 15] Output: 5 Explanation: You need to sort [6, 4, 8, 10, 9] in ascending order to make the whole array sorted in ascending order.
Si vous effectuez un tri, le tableau entier sera organisé par ordre croissant. Le sous-tableau le plus court va de «6» à «9», donc le nombre d'éléments est acquis et 5 est renvoyé.
Préparez la variable triée, la variable «start» qui récupère l'élément depuis le début et la variable «last» qui récupère l'élément à partir de la fin, et si les valeurs du tableau trié et du tableau d'origine ne correspondent pas, l'index de cet élément est défini. Remplacez "start". Faites-le aussi pour last
, et la différence +1 est la longueur du nombre d'éléments requis.
Enfin, nous avons implémenté une fonction qui renvoie last --start + 1
if last-start
tient, et 0
sinon.
class Solution:
def findUnsortedSubarray(self, nums: List[int]) -> int:
start = last = 0
num = sorted(nums)
for i in range(len(nums)):
if nums[i] != num[i]:
start = i
break
for i in range(len(nums)-1,-1,-1):
if nums[i] != num[i]:
last = i
break
return last - start + 1 if last - start else 0
# Runtime: 196 ms, faster than 98.85% of Python3 online submissions for Shortest Unsorted Continuous Subarray.
# Memory Usage: 15.2 MB, less than 5.00% of Python3 online submissions for Shortest Unsorted Continuous Subarray.
C'était une idée assez simple, mais c'est mieux que ce à quoi je m'attendais. La facilité des questions les plus appréciées a considérablement diminué, je pense donc qu'elle ne sera que moyenne à l'avenir.
En ce qui concerne Hard, je ne sais pas si cela peut être résolu correctement, mais je le résoudrai s'il y a une opportunité.
Recommended Posts