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

img
img

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

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

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

前言

  • 本期是学习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 {


![img](https://img-blog.csdnimg.cn/img_convert/2cceb68b8283a26a3ddd946e09445d5a.png)
![img](https://img-blog.csdnimg.cn/img_convert/0a9630dc5704c543cff653915ce2cb10.png)
![img](https://img-blog.csdnimg.cn/img_convert/97cd4d93573ab56bc8e2e230af874131.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**

...(img-BPc0Zoo7-1715535482565)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值