当前位置:网站首页>【Go语言刷题篇】Go从0到入门4:切片的高级用法、初级复习与Map入门学习
【Go语言刷题篇】Go从0到入门4:切片的高级用法、初级复习与Map入门学习
2022-06-24 18:52:00 【游戏编程】
前言
- 本期是学习Golang的:切片高级用法及初级复习、Map、条件与循环语句入门学习,有不懂的地方可以评论进行讨论!
本系列文章采用牛客的核心代码模式进行案例代码提供,帮助大家从0到入门的学习过程中进行配套的刷题~
推荐给大家一款刷题、面试的神器 ,我也是用这一款神器进行学习的!~链接如下:刷题神器跳转链接
该神器不仅网页界面十分美观,而且操作起来极易上手入门! 非常适合新手进行系统性的学习!
小白新手可以通过该神器进行日常的刷题、看大厂面经、学习计算机基础知识、与大牛面对面沟通~ 刷题的图片已经放在下面了~

Q1:切片-出队
问题描述:学生们都排成了一队,有一个切片表示相应学生们的身高,现随机喊某个位置的人出队,返回出队后的这个切片。比如[2,3,4,5],索引为1的位置的出队,出队后切片为[2,4,5]
相关知识:
1、s|n| 切片s中索引位置为n的项
2、s|:| 从切片s的索引位置0到len(s)-1 处所获得的切片
3、s|low:| 从切片s的索引位置 low 到len(s)-1 处所获得的切片
4、s|:high| 从切片s的索引位置 0到high 处所获得的切片,len=high
5、s|low: high| 从切片s的素引位置 Iow 到high 处所获得的切片,len-high-low
6、s|low: high:max| 从切片s的素引位置 low 到high 处所获得的切片,len-high-low, cap=max-low
示例输入:[1,2,3,4,5,6],3
示例输出:[1,2,3,5,6]
案例代码:
//import "fmt"/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @param s int整型一维数组 身高 * @param index int整型 出队索引 * @return int整型一维数组*/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:切片遍历-评委打分
问题描述:小明参加某个歌唱比赛,评委们进行打分,要求去掉最高分,和最低分,将最高分和最低分依次存入切片并返回。
相关知识:
1、int64最大值,最小值, 大小比较,多返回值
2、golang中有符号的最大值为math.MaxInt64,最小值为math.MinInt64
3、切片的遍历有两种方式,for循环和for range循环
示例输入:[1,2,3,4,5,6,7,8,9]
示例输出:[1,9]
案例代码:
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:切片遍历-调整顺序
问题描述:小朋友们依次站成了一排,现要将他们调换顺序,反着排,按照从最右的人站在最左边,倒数最右边的人站在最左边第二个位置,以此类推。比如小朋友的顺序为[1,3,2,3,4,6],重新排列后为[6,4,3,2,3,1]。
相关知识:
1、len(slice)求一个切片的长度
2、for循环遍历切片
3、多重赋值的特性可以轻松实现变量的交换,变量一,变量二 := 变量二,变量一
示例输入:[1,2,3,4,5,6,7,8,9]
示例输出:[9,8,7,6,5,4,3,2,1]
案例代码:
//import "fmt"/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @param s int整型一维数组 * @return int整型一维数组*/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:切片遍历-判断两个切片是否有相同的元素
问题描述:给定两个切片,判断这两个切片中的元素是否完全一样。
相关知识:
1、len(slice)求一个切片的长度
2、for循环遍历切片
示例输入:[1,2,3,4],[1,2,3,4]
示例输出:true
案例代码:
//import "fmt"/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @param s1 int整型一维数组 * @param s2 int整型一维数组 * @return bool布尔型*/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:合并有序数组
问题描述:给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
相关知识:
1、for循环
2、break中断循环
3、append切片的追加
示例输入:[1,2,3,0,0,0],3,[2,5,6],3
示例输出:[1,2,2,3,5,6]
案例代码:
//import "fmt"/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @param nums1 int整型一维数组 * @param m int整型 * @param nums2 int整型一维数组 * @param n int整型 * @return int整型一维数组*/func merge(nums1 []int, m int, nums2 []int, n int) []int { // write code here //类似 归并排序 从后面 开始判断 把大的 返回 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-成绩表
问题描述:某大学宿舍6人的数学成绩分别为 小明:60,小王:70,张三:95,李四:98,王五:100,张伟:88 ,现要将六人的成绩录入成绩表中,这个成绩表用一个map来表示,成绩表的键为宿舍成员的姓名,值为对应的分数 。打印该成绩表
相关知识:
1、map的声明:map[KeyType]ValueType KeyType:表示键的类型。ValueType:表示键对应的值的类型。map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为:make(map[KeyType]ValueType, [cap]) 其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。
2、map[key]=value 给指定的key赋指定的value
示例输入:
示例输出:map[小明:60 小王:70 张三:95 张伟:88 李四:98 王五:100]
案例代码:
import "fmt"func main() { m1 := make(map[string]int) m1["小明"] = 60 m1["小王"] = 70 m1["张三"] = 95 m1["张伟"] = 88 m1["李四"] = 98 m1["王五"] = 100 fmt.Println(m1)}Q7:Map-单词字符
问题描述:给定一个只由字母和数字组成的字符串,,统计每个字符出现的次数,并返回出现次数最多的字符。
相关知识:
1、组成每个字符串的元素叫做“字符”,可以通过遍历或者单个获取字符串元素获得字符。 字符用单引号(’)包裹起来,如:var a = ‘中’
2、map的每个key是唯一的。
3、map的声明:map[KeyType]ValueType KeyType:表示键的类型。ValueType:表示键对应的值的类型。map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为:make(map[KeyType]ValueType, [cap]) 其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。
示例输入:“yyds”
示例输出:y
案例代码:
//import "fmt"/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @param s string字符串 * @return char字符型*/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}后文:刷题神器
点击链接进行跳转注册,开始你的保姆级刷题之路吧!刷题打怪码神之路
另外这里不仅仅可以刷题,你想要的这里都会有,十分适合小白和初学者入门学习~
1、算法篇(398题):面试必刷100题、算法入门、面试高频榜单
2、数据结构篇(300题):都是非常经典的链表、树、堆、栈、队列、动态规划等
3、语言篇(500题):C/C++、java、python入门算法练习
4、SQL篇(82题):快速入门、SQL必知必会、SQL进阶挑战、面试真题
5、大厂笔试真题:字节跳动、美团、百度、腾讯…掌握经验不在惧怕面试!

作者:洲的学习笔记
游戏编程,一个游戏开发收藏夹~
如果图片长时间未显示,请使用Chrome内核浏览器。
边栏推荐
- Why useevent is not good enough
- 一次 MySQL 误操作导致的事故,高可用都不顶不住!
- BSS应用程序云原生部署的8大挑战
- 通过SCCM SQL生成计算机上一次登录用户账户报告
- Freeswitch uses origin to dialplan
- Xiaobai, let me ask you guys, is MySQL binlog extracted by CDC in strict order
- ArrayList源码解析
- php OSS文件讀取和寫入文件,workerman生成臨時文件並輸出瀏覽器下載
- Volcano becomes spark default batch scheduler
- mysql binlog 数据源配置文档麻烦分享一下
猜你喜欢

Game between apifox and other interface development tools

Programmers spend most of their time not writing code, but...

企业网络管理员必备的故障处理系统

Technology implementation | Apache Doris cold and hot data storage (I)

Introduction to alos satellite

Kubernetes集群部署

System design idea of time traceability

three. Basic framework created by JS

The sharp sword of API management -- eolink

Power efficiency test
随机推荐
Example analysis of corrplot related heat map beautification in R language
怎么使用R包ggtreeExtra绘制进化树
Fabric ledger data block structure analysis (I): how to analyze the smart contract transaction data in the ledger
finkcdc支持sqlserver2008么?
Northwestern Polytechnic University attacked by hackers? Two factor authentication changes the situation!
Preliminary study nuxt3
This is not safe
thinkphp6中怎么使用jwt认证
Would you like to ask whether the same multiple tasks of the PgSQL CDC account will have an impact? I now have only one of the three tasks
论文解读(SR-GNN)《Shift-Robust GNNs: Overcoming the Limitations of Localized Graph Training Data》
Volcano成Spark默認batch調度器
Ask a question. Adbhi supports the retention of 100 databases with the latest IDs. Is this an operation like this
Understanding openstack network
Starring V6 platform development take out point process
Internet of things? Come and see Arduino on the cloud
Zadig + 洞态 IAST:让安全溶于持续交付
NFT质押流动性挖矿系统开发技术
特尔携手微软发挥边云协同势能,推动AI规模化部署
How to use R package ggtreeextra to draw evolution tree
60 divine vs Code plug-ins!!