当前位置:网站首页>[go Language brossage] go from 0 to Getting started 4: Advanced use of slice, Primary Review and Map Getting started Learning

[go Language brossage] go from 0 to Getting started 4: Advanced use of slice, Primary Review and Map Getting started Learning

2022-06-24 19:33:00 Programmation de jeux

Préface

  • Ce numéro est une étudeGolangDe:Utilisation avancée de la tranche et examen préliminaire、Map、Conditions et déclarations circulaires pour commencer l'apprentissage,Il y a des choses que vous ne comprenez pas qui peuvent être commentées pour une discussion!

  • Cette série d'articles utilise le modèle de code de base de niuke pour fournir le Code de cas,Aidez tout le monde à partir de0Passez à l'étape d'apprentissage d'introduction avec des questions de brosse correspondantes~

  • Il est recommandé de brosser les questions、L'artefact de l'interview ,J'ai aussi appris avec cet artefact!~Liens ci - dessous:Lien de saut de l'artefact

  • L'artefact n'est pas seulement une interface Web très belle,Et il est très facile d'entrer! Idéal pour les débutants pour un apprentissage systématique!

  • Le petit novice blanc peut utiliser cet artefact pour les problèmes quotidiens de brosse、Regardez la grande usine、Apprendre les bases de l'informatique、Communication face à face avec Daniel~ L'image du problème de brosse a été placée ci - dessous~

    【GoTexte de la langue】GoDe0Pour commencer4:Utilisation avancée des tranches、Examen préliminaire etMapIntroduction à l'apprentissage - No1Zhang.

Q1:Tranche-Dehors!

Description du problème:Les étudiants se sont alignés,Il y a une tranche représentant la taille de l'étudiant correspondant,Appelez au hasard quelqu'un d'un endroit pour sortir de l'équipe,Cette tranche après le retour de l'équipe.Par exemple,[2,3,4,5],Index As1Pour sortir de l'équipe,Les tranches sont[2,4,5]
Connaissances pertinentes:
1、s|n| TranchesL'emplacement de l'index moyen estnArticle de
2、s|:| De la tranchesEmplacement de l'index pour0Àlen(s)-1 Tranches obtenues localement
3、s|low:| De la tranchesEmplacement de l'index pour low Àlen(s)-1 Tranches obtenues localement
4、s|:high| De la tranchesEmplacement de l'index pour 0Àhigh Tranches obtenues localement,len=high
5、s|low: high| De la tranches Position de l'index principal Iow Àhigh Tranches obtenues localement,len-high-low
6、s|low: high:max| De la tranches Position de l'index principal low Àhigh Tranches obtenues localement,len-high-low, cap=max-low
Exemple d'entrée:[1,2,3,4,5,6],3
Exemple de sortie:[1,2,3,5,6]
Code du cas:

//import "fmt"/** * Nom de la classe dans le Code、Nom de la méthode、Nom du paramètre spécifié,Ne pas modifier,Renvoie directement la valeur spécifiée par la méthode * @param s intUn tableau unidimensionnel entier Taille * @param index intTaille Index de sortie * @return intUn tableau unidimensionnel entier*/func deleteElement(s []int, index int) []int {    // write code here    s1 := s[0 : index]    s2 := s[index+1:]    s1 = append(s1, s2...)    return s1}

Q2:Traversée des tranches-Notation des juges

Description du problème: Xiao Ming participe à un concours de chant , Les juges ont noté , Le score le plus élevé doit être supprimé ,Et le score le plus bas, Enregistrer les scores les plus élevés et les plus faibles dans la tranche et retourner .
Connaissances pertinentes:
1、int64Max.,Minimum, Comparaison des tailles,Valeurs de retour multiples
2、golang La valeur maximale signée est math.MaxInt64,Min.math.MinInt64
3、 Il y a deux façons de traverser une tranche ,forBoucle etfor rangeCycle
Exemple d'entrée:[1,2,3,4,5,6,7,8,9]
Exemple de sortie:[1,9]
Code du cas:

func minAndMax(s []int) []int {    // write code here    var ans []int    var a int = s[0]    var b int = s[0]    for _, j := range s {        a = max(a, j)        b = min(b, j)    }    ans = append(ans, b)    ans = append(ans, a)    return ans}func min(a int, b int) int {    if a < b {        return a    }    return b}func max(a int, b int) int {    if a > b {        return a    }    return b}

Q3:Traversée des tranches-Ajuster l'ordre

Description du problème: Les enfants se sont alignés. , Ils vont changer d'ordre. , Rangée inversée , Suivez les gens de l'extrême droite à l'extrême gauche , L'avant - dernier à droite est en deuxième position à gauche. ,Et ainsi de suite.. Par exemple, l'ordre des enfants est [1,3,2,3,4,6], Après réarrangement [6,4,3,2,3,1].
Connaissances pertinentes:
1、len(slice) Trouver la longueur d'une tranche
2、forBoucle à travers la tranche
3、 La fonction multi - assignations facilite l'échange de variables ,Variable 1,Variable 2 := Variable 2,Variable 1
Exemple d'entrée:[1,2,3,4,5,6,7,8,9]
Exemple de sortie:[9,8,7,6,5,4,3,2,1]
Code du cas:

//import "fmt"/** * Nom de la classe dans le Code、Nom de la méthode、Nom du paramètre spécifié,Ne pas modifier,Renvoie directement la valeur spécifiée par la méthode * @param s intUn tableau unidimensionnel entier  * @return intUn tableau unidimensionnel entier*/func convert(s []int) []int {    // write code here    length := len(s)    for i := 0; i < length/2; i++{        s[i], s[length-i-1] = s[length-i-1], s[i]//      tmp := s[i]//      s[i] = s[length-i-1]//      s[length-i-1] = tmp    }    return s}

Q4:Traversée des tranches- Déterminer si les deux tranches ont le même élément

Description du problème: Deux tranches données , Déterminer si les éléments des deux tranches sont identiques .
Connaissances pertinentes:
1、len(slice) Trouver la longueur d'une tranche
2、forBoucle à travers la tranche
Exemple d'entrée:[1,2,3,4],[1,2,3,4]
Exemple de sortie:true
Code du cas:

//import "fmt"/** * Nom de la classe dans le Code、Nom de la méthode、Nom du paramètre spécifié,Ne pas modifier,Renvoie directement la valeur spécifiée par la méthode * @param s1 intUn tableau unidimensionnel entier  * @param s2 intUn tableau unidimensionnel entier  * @return boolBooléen*/func equal( s1 []int ,  s2 []int ) bool {    // write code here    length := len(s1)    for i := 0; i < length; i++{        if s1[i] != s2[i]{            return false        }    }    return true}

Q5:Fusionner les tableaux ordonnés

Description du problème:Pour vous deux, appuyez Ordre non décroissant Un tableau d'entiers disposés nums1 Et nums2,Deux autres entiers m Et n ,Représente séparément nums1 Et nums2 Nombre d'éléments dans.Je t'en prie. Fusionner nums2 À nums1 Moyenne,Faites le tableau fusionné comme Ordre non décroissant Disposition.Attention!:Final,Le tableau fusionné ne doit pas être retourné par la fonction,C'est stocké dans un tableau nums1 Moyenne.Pour faire face à cette situation,nums1 La longueur initiale de m + n,Dont avant m Les éléments représentent les éléments à fusionner,Après n Les éléments sont 0 ,Doit être ignoré.nums2 La longueur de n .
Connaissances pertinentes:
1、forCycle
2、breakInterrompre le cycle
3、appendAjout de tranches
Exemple d'entrée:[1,2,3,0,0,0],3,[2,5,6],3
Exemple de sortie:[1,2,2,3,5,6]
Code du cas:

//import "fmt"/** * Nom de la classe dans le Code、Nom de la méthode、Nom du paramètre spécifié,Ne pas modifier,Renvoie directement la valeur spécifiée par la méthode * @param nums1 intUn tableau unidimensionnel entier  * @param m intTaille  * @param nums2 intUn tableau unidimensionnel entier  * @param n intTaille  * @return intUn tableau unidimensionnel entier*/func merge(nums1 []int, m int, nums2 []int, n int) []int {    // write code here    //Similaire Ordre de fusion  Par derrière. Commence à juger.  Prends le gros. Retour    i := m + n - 1    p1 := m - 1    p2 := n - 1    for p1 >= 0 && p2 >= 0 {        if nums1[p1] >= nums2[p2] {            nums1[i] = nums1[p1]            p1--            i--        } else {            nums1[i] = nums2[p2]            p2--            i--        }    }    for p1 >= 0 {        nums1[i] = nums1[p1]        p1--        i--    }    for p2 >= 0 {        nums1[i] = nums2[p2]        p2--        i--    }    return nums1}

Q6:Map-Feuille de notes

Description du problème: Un dortoir universitaire 6 Les notes en maths des gens sont Xiao Ming:60,Xiao Wang.:70,Zhang San:95,Li - si.:98,Wang Wu:100,Zhang Wei:88 , Il est temps d'inscrire les notes de six personnes dans le tableau des notes. , Cette feuille de notes utilise un mapPour représenter, La clé de la Feuille de notes est le nom du membre du dortoir , La valeur est la fraction correspondante . Imprimer cette feuille de notes
Connaissances pertinentes:
1、mapDéclaration:map[KeyType]ValueType KeyType:Indique le type de clé.ValueType:Indique le type de valeur correspondant à la clé.mapLa valeur initiale par défaut de la variable de type estnil,À utilisermake()Fonction pour allouer la mémoire.La syntaxe est:make(map[KeyType]ValueType, [cap]) Parmi euxcapReprésentationmapCapacité,Ce paramètre n'est pas nécessaire,Mais nous devrions initialisermapDonnez - lui une capacité appropriée.
2、map[key]=value Pour lekey Assigner value
Exemple d'entrée:
Exemple de sortie:map[Xiao Ming:60 Xiao Wang.:70 Zhang San:95 Zhang Wei:88 Li - si.:98 Wang Wu:100]
Code du cas:

import "fmt"func main() {    m1 := make(map[string]int)    m1["Xiao Ming"] = 60    m1["Xiao Wang."] = 70    m1["Zhang San"] = 95    m1["Zhang Wei"] = 88    m1["Li - si."] = 98    m1["Wang Wu"] = 100    fmt.Println(m1)}

Q7:Map-Caractère word

Description du problème: Donne une chaîne de lettres et de chiffres ,,Compte le nombre d'occurrences par caractère, Et renvoie le caractère qui apparaît le plus souvent .
Connaissances pertinentes:
1、Les éléments qui composent chaque chaîne sont appelés“Les caractères”,Vous pouvez obtenir des caractères en traversant ou en récupérant un seul élément de chaîne. Caractères en guillemets simples(’)Enveloppé,Par exemple::var a = ‘Moyenne’
2、mapChaquekeyEst le seul.
3、mapDéclaration:map[KeyType]ValueType KeyType:Indique le type de clé.ValueType:Indique le type de valeur correspondant à la clé.mapLa valeur initiale par défaut de la variable de type estnil,À utilisermake()Fonction pour allouer la mémoire.La syntaxe est:make(map[KeyType]ValueType, [cap]) Parmi euxcapReprésentationmapCapacité,Ce paramètre n'est pas nécessaire,Mais nous devrions initialisermapDonnez - lui une capacité appropriée.
Exemple d'entrée:“yyds”
Exemple de sortie:y
Code du cas:

//import "fmt"/** * Nom de la classe dans le Code、Nom de la méthode、Nom du paramètre spécifié,Ne pas modifier,Renvoie directement la valeur spécifiée par la méthode * @param s stringString  * @return charType de caractère*/func character(s string) byte {    // write code here    arr := ([]byte)(s)    count := 0    var ans byte    charaMap := make(map[byte]int)    for _, j := range arr {        charaMap[j]++        if charaMap[j] > count {            count = charaMap[j]            ans = j        }    }    return ans}

PostScript:L'artefact de brosse

Cliquez sur le lien pour vous inscrire, Commencez votre travail de baby - sitter. ! Le chemin des dieux
Et ce n'est pas seulement une question de brosse. , Tout ce que vous voudrez. ,Idéal pour les débutants et les débutants~
1、Chapitre sur les algorithmes(398Questions):L'entrevue est obligatoire.100Questions、Introduction aux algorithmes、Liste des entretiens à haute fréquence
2、Structure des données(300Questions):Ce sont des listes très classiques、Arbre、Pile、Pile、File d'attente、Planification dynamique, etc
3、Langue(500Questions):C/C++、java、pythonPratique de l'algorithme de démarrage
4、SQLArticles(82Questions):Démarrage rapide、SQLOui, oui.、SQLDéfis avancés、Questions d'entrevue
5、Le vrai problème de l'examen écrit de Dachang:Byte Runout、Meituan、Baidu、Tencent…La maîtrise de l'expérience n'est pas une crainte d'entrevue!

【GoTexte de la langue】GoDe0Pour commencer4:Utilisation avancée des tranches、Examen préliminaire etMapIntroduction à l'apprentissage - No2Zhang.

Auteur: Notes d'étude de Zhou

Programmation de jeux,Un favori pour le développement de jeux~

Si l'image n'est pas affichée depuis longtemps,Veuillez utiliserChromeNavigateur du noyau.

原网站

版权声明
本文为[Programmation de jeux]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/175/202206241330118954.html