当前位置:网站首页>[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~

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!

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.
边栏推荐
- R for Data Science (note) -- data transformation (select basic use)
- 一次 MySQL 误操作导致的事故,高可用都不顶不住!
- PingCAP 入选 2022 Gartner 云数据库“客户之声”,获评“卓越表现者”最高分
- [computer talk club] Lecture 3: how to raise key issues?
- Huawei machine learning service speech recognition function enables applications to paint "sound" and color
- How to use JWT authentication in thinkphp6
- ls 常用参数
- 请问一下2.2.0版本支持动态新增mysql同步表吗
- Application practice | massive data, second level analysis! Flink+doris build a real-time data warehouse scheme
- Unity移动端游戏性能优化简谱之 以引擎模块为划分的CPU耗时调优
猜你喜欢
随机推荐
If the programmer tells the truth during the interview
flink cdc全量读mysql老是报这个错怎么处理
Necessary fault handling system for enterprise network administrator
一次 MySQL 误操作导致的事故,高可用都不顶不住!
Buddha bless you that there will never be a bug
Application practice | massive data, second level analysis! Flink+doris build a real-time data warehouse scheme
Ask a question. Adbhi supports the retention of 100 databases with the latest IDs. Is this an operation like this
一文理解OpenStack网络
小滴课堂海量数据处理商用短链平台大课
Geoscience remote sensing data collection online
佛祖保佑 永无BUG
Understanding openstack network
Will the CDC read out of order when I use SQL
Application DDoS attack principle and defense method
目前是不是只cdc 监控mysql 可以拿到新增列的数据 sqlserver不行是吧
UART communication (STM32F103 library function)
Unity mobile game performance optimization spectrum CPU time-consuming optimization divided by engine modules
Interpreting harmonyos application and service ecology
System design idea of time traceability
Ls common parameters








![subject may not be empty [subject-empty]](/img/6b/9b57a7ed3ab086036cb6dfe0b31de4.png)
