【Go语言刷题篇】Go从0到入门4:切片的高级用法、初级复习与Map入门学习_go 评委们进行打分,要求去掉最高分,和最低分,将最高分和最低分依次存入切片并返回

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

* @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]



![img](https://img-blog.csdnimg.cn/img_convert/78f9c1f7e1f1cb447daefc50d1a7657d.png)
![img](https://img-blog.csdnimg.cn/img_convert/416bc07a5ae261f0cbc06c549961a8eb.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

81)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值