Golang 百题(实战快速掌握语法)_2

返回集合中满足指定条件的最后一个元素

本实验将实现判断给定集合中的元素是否符合,并返回符合的最后一个元素。

知识点
  • for
  • fmt.Error
适合人群

本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。

许可证

内容编译来自 psampaz和30s-seconds-of-golang 的开源项目,它们分别使用 CC BY-SA 4.0 License,CC0-1.0 License,为了能够适合实验楼在线环境,我们修改了部分解题和单元测试代码。

代码实例

我们可以使用 for 循环倒序遍历来进行查看,因为 Go 中参数可以为函数,所有我们使用判断函数来作为判断的参数传入主函数中,下面是一个例子。

package mainimport "fmt"func FindLastInt(arr []int, f func(int) bool) (int, error) {for i := len(arr) - 1; i >= 0; i-- {if f(arr[i]) {return arr[i], nil}}return 0, fmt.Errorf("No matches found")
}
func FindLastFloat64(arr []float64, f func(float64) bool) (float64, error) {for i := len(arr) - 1; i >= 0; i-- {if f(arr[i]) {return arr[i], nil}}return 0.0, fmt.Errorf("No matches found")
}
func FindLastBool(arr []bool, f func(bool) bool) (bool, error) {for i := len(arr) - 1; i >= 0; i-- {if f(arr[i]) {return arr[i], nil}}return false, fmt.Errorf("No matches found")
}
func FindLastString(arr []string, f func(string) bool) (string, error) {for i := len(arr) - 1; i >= 0; i-- {if f(arr[i]) {return arr[i], nil}}return "", fmt.Errorf("No matches found")
}
func main() {r1, ch1 := FindLastInt([]int{1, 1, 2}, func(x int) bool { return x%2 == 0 }) // 2 nilfmt.Println(r1, ch1)
}

该程序的功能:

  • 使用 for 循环逆序遍历给定的集合
  • 使用函数 f 来判断是否是符合条件的元素
  • 如果符合条件,则输出元素和 nil,否则输出 0 和错误信息
  • 使用fmt.Error()来生成错误

将代码保存为/home/project/findLast.go文件。

运行程序

打开 WebIDE 的 Terminal 终端,输入以下命令查看输出:

go run findLast.go

总结

本实验我们学习了如何返回集合中满足指定条件的最后一个元素,下个实验我们将讲解如何对给定的集合进行分组。

对给定的集合进行分组

本实验将实现对输入的多个集合按照索引进行分组然后返回这个新的集合。

知识点
  • for
  • reflect
适合人群

本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。

许可证

内容编译来自 psampaz和30s-seconds-of-golang 的开源项目,它们分别使用 CC BY-SA 4.0 License,CC0-1.0 License,为了能够适合实验楼在线环境,我们修改了部分解题和单元测试代码。

代码实例

本实验我们将使用...来对给定的多个集合按照索引进行整合,下面是一个例子。

package mainimport ("fmt""reflect"
)func Zip(params ...interface{}) [][]interface{} {l := 0for i := range params {arr := reflect.ValueOf(params[i])if l < arr.Len() {l = arr.Len()}}r := make([][]interface{}, l)for i := 0; i < l; i++ {r[i] = make([]interface{}, 0)for j := range params {v := reflect.ValueOf(params[j])if v.Len() > i {r[i] = append(r[i], v.Index(i).Interface())}}}return r
}
func main() {s := []string{"a", "b"}i := []int{1, 2}b := []bool{true, false}r1 := Zip(s, i, b) // [[a 1 true] [b 2 false]]fmt.Println(r1)
}

该程序的功能:

  • 使用 make 创建一个二维interface{}数组,并将长度设置为最长的集合
  • 使用 for 循环来遍历给定的多个数组,然后把数组中相同索引的值加到设置的二维数组中。

将代码保存为/home/project/zip.go文件。

运行程序

打开 WebIDE 的 Terminal 终端,输入以下命令查看输出:

go run zip.go

图片描述

总结

本实验我们学习了对多个给定的集合进行索引的分组,下个实验我们将讲解如何判断给定的字符串是否为回文。

判断是否为回文

回文是指正读和反读一样的字符,本实验将判断输入的字符串是否为回文。(本题样例不区分大小写只按正读和反读区分是否回文)

知识点
  • range
适合人群

本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。

许可证

内容编译来自 psampaz和30s-seconds-of-golang 的开源项目,它们分别使用 CC BY-SA 4.0 License,CC0-1.0 License,为了能够适合实验楼在线环境,我们修改了部分解题和单元测试代码。

代码实例

我们分别使用两个变量分别位于字符串的首尾,如果这两个变量相同则它们分别移动一次向中间靠拢,下面是具体的实现。

package mainimport ("fmt""strings"
)func IsPalindrome(s string) bool {v := strings.ToLower(strings.Join(strings.Fields(s), ""))for i := range v {if v[len(v)-i-1] != v[i] {return false}}return true
}
func main() {r := IsPalindrome("taco cat")fmt.Println(r)
}

该程序的功能:

  • 使用strings.ToLower使得输入的字符串全部转为小写。
  • for 循环判断字符串的两侧。

将代码保存为/home/project/isPalindrome.go文件。

运行程序

打开 WebIDE 的 Terminal 终端,输入以下命令查看输出:

go run isPalindrome.go

图片描述

总结

本实验我们学习了如何通过首尾参数来判断给定的字符串是否为回文,下个实验我们将学习如何连接同类型的切片。

连接切片

Go 语言中连接同种类型的不同切片,可以使用 append 函数,本实验将实现对输入的切片进行连接。

知识点
  • append
适合人群

本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。

许可证

内容编译来自 psampaz和30s-seconds-of-golang 的开源项目,它们分别使用 CC BY-SA 4.0 License,CC0-1.0 License,为了能够适合实验楼在线环境,我们修改了部分解题和单元测试代码。

代码实例

我们使用 append 和...来进行切片的连接,其中...的作用表示传入切片的多个值,通常用在接受多个不确定数量的参数和表示函数有多个不定参数的情况,下面是一个例子。

package mainimport "fmt"func ConcatInt(a, b []int) []int {return append(a, b...)
}
func ConcatFloat64(a, b []float64) []float64 {return append(a, b...)
}
func ConcatBool(a, b []bool) []bool {return append(a, b...)
}
func ConcatStrings(a, b []string) []string {return append(a, b...)
}
func main() {d1, d2 := []string{"a", "b", "c"}, []string{"d", "e"}r := ConcatStrings(d1, d2) // [a b c d e]fmt.Println("date1 ", d1, "\ndate2 ", d2, "\nresult: ", r)
}

该程序的功能:

  • 使用 append 和可变参数...来扩展 slice

将代码保存为/home/project/concat.go文件。

运行程序

打开 WebIDE 的 Terminal 终端,输入以下命令查看输出:

go run concat.go

图片描述

总结

本实验我们学习了如何通过不定参数变量和 append 连接切片的方法,下个实验我们将讲解求多个数字的最大公约数。

求多个数字的最大公约数

本实验将求多个数字的最小公约数。

知识点
  • 递归
  • for
适合人群

本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。

许可证

内容编译来自 psampaz和30s-seconds-of-golang 的开源项目,它们分别使用 CC BY-SA 4.0 License,CC0-1.0 License,为了能够适合实验楼在线环境,我们修改了部分解题和单元测试代码。

代码实例

公约数是指能同时整除几个整数的数,本实验我们将两两遍历,把求得的公约数作为下一次循环的一项进行计算,下面是一个例子。

package mainimport "fmt"func gcd(x, y int) int {if y == 0 {return x}return gcd(y, x%y)
}func GCD(nums ...int) int {r := nums[0]for _, num := range nums[1:] {r = gcd(r, num)}return r
}
func main() {r1 := GCD(8, 36)               // 4r2 := GCD([]int{11, 8, 32}...) // 1  这里的...为了将切片展开成可变参数fmt.Println(r1, r2)
}

该程序的功能:

  • 使用 gcd 函数创建一个递归。
  • 递归的返回条件是当 y 为 0 时,返回 x。
  • 使用 range 和 gcd 函数来为给定的每一个数字进行计算。

将代码保存为/home/project/gcd.go文件。

运行程序

打开 WebIDE 的 Terminal 终端,输入以下命令查看输出:

go run gcd.go

图片描述

总结

本实验我们学习了如何求多个数字的最大公约数,下个实验我们将学习如何求多个数字的最小公倍数。

求多个数字的最小公倍数

两个或多个整数公有的倍数叫做它们的公倍数,最小公倍数是指其中除 0 以外最小的一个公倍数,本实验将实现通过递归求解多个数字的最小公倍数。

知识点
  • for
  • 递归
适合人群

本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。

许可证

内容编译来自 psampaz和30s-seconds-of-golang 的开源项目,它们分别使用 CC BY-SA 4.0 License,CC0-1.0 License,为了能够适合实验楼在线环境,我们修改了部分解题和单元测试代码。

代码实例

本实验我们将使用递归来获得多个数字的最小公倍数,下面是一个例子。

package mainimport ("fmt"
)func gcd(x, y int) int {if y == 0 {return x}return gcd(y, x%y)
}func LCM(nums ...int) int {x := nums[0]for _, y := range nums[1:] {x = (x * y) / gcd(x, y)}return x
}
func main() {r1 := LCM(12, 7)                // 84r2 := LCM([]int{1, 3, 4, 5}...) // 60fmt.Println(r1, r2)
}

该程序的功能:

  • 使用 gcd 函数创建一个递归。
  • 递归的返回条件是当 y 为 0 时,返回 x。
  • 使用 range 和 gcd 函数来为给定的每一个数字进行计算。

将代码保存为/home/project/lcm.go文件。

运行程序

打开 WebIDE 的 Terminal 终端,输入以下命令查看输出:

go run lcm.go

图片描述

总结

本实验我们讲解了如何求多个数组的最小公倍数,下个实验我们将学习返回指定范围内的切片。

返回指定范围内的切片

本实验将给定一个起始终止,递增的范围。返回指定范围的切片。

知识点
  • range
  • fmt
适合人群

本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。

许可证

内容编译来自 psampaz和30s-seconds-of-golang 的开源项目,它们分别使用 CC BY-SA 4.0 License,CC0-1.0 License,为了能够适合实验楼在线环境,我们修改了部分解题和单元测试代码。

代码实例

本实验我们输入起始,终止和递增的范围,来生成指定范围内的切片,下面是一个例子。

package mainimport ("fmt"
)func IntRange(f, t, s int) []int {arr := make([]int, (t-f+1)/s)for i := range arr {arr[i] = i*s + f}return arr
}
func main() {r1 := IntRange(0, 9, 2)fmt.Println(r1)
}

该程序的功能:

  • 使用 make 创建一个适合大小的切片
  • 使用 range 来迭代切片并且填充。

将代码保存为/home/project/intRange.go文件。

运行程序

打开 WebIDE 的 Terminal 终端,输入以下命令查看输出:

go run intRange.go

图片描述

总结

本实验我们学习了如何返回指定范围内的切片,下一个实验我们将讲解如何获得指定范围内的随机切片。

返回指定范围内的随机切片

本实验我们将分别输入起始范围,终止范围来实现生成指定范围内的随机数组,这里随机我们使用的是 math/rand。

知识点
  • math/rand
适合人群

本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。

许可证

内容编译来自 psampaz和30s-seconds-of-golang 的开源项目,它们分别使用 CC BY-SA 4.0 License,CC0-1.0 License,为了能够适合实验楼在线环境,我们修改了部分解题和单元测试代码。

代码实例

本实验我们将使用math/rand包来生成指定范围的随机切片,下面是一个例子。

package mainimport ("fmt""math/rand"
)func RandIntSliceInRange(min, max, n int) []int {arr := make([]int, n)for i := range arr {arr[i] = rand.Intn(max-min) + min //随机范围切片}return arr
}
func main() {r1 := RandIntSliceInRange(12, 35, 10)fmt.Println(r1)
}

该程序的功能:

  • 使用make创建一个合适大小的切片。
  • 使用 range 来遍历切片,并且用 rand.Intn()来生成指定范围内的随机数添加到切片中。

将代码保存为/home/project/randIntSliceInRange.go文件。

运行程序

打开 WebIDE 的 Terminal 终端,输入以下命令查看输出:

go run randIntSliceInRange.go

图片描述

总结

本实验我们使用 rand 生成了一个指定范围内的切片,下一个实验我们将讲解如何求集合中的中位数。

求集合中的中位数

中位数是按顺序排列的一组数据中居于中间位置的数,本实验我们将通过使用 sort 函数和 for 循环获得集合的中位数。

知识点
  • sort
  • for
适合人群

本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。

许可证

内容编译来自 psampaz和30s-seconds-of-golang 的开源项目,它们分别使用 CC BY-SA 4.0 License,CC0-1.0 License,为了能够适合实验楼在线环境,我们修改了部分解题和单元测试代码。

代码实例

Go 语言 Sort 包下的 Float64s 函数可以对输入的集合进行升序排序列,用法如下:

func Float64s(a []float64)

下面我们将使用 sort 来求给定集合的中位数,下面是一个例子。

package mainimport ("fmt""math""sort"
)func Median(nums ...float64) float64 {m, n := int(math.Floor(float64(len(nums))/2.0)),nums[:]   //Floor将结果向下取整sort.Float64s(n)if len(nums)%2 == 0 {return (n[m-1] + n[m]) / 2.0}return n[m]
}
func main() {r1 := Median(5.0, 6.0, 50.0, 1.0, -5.0)r2 := Median(1.0, 2.0, 4.0, 5.0)fmt.Println("中位数:", r1, "中位数:", r2)
}

该程序的功能:

  • 找到中位数 m。
  • 使用 sort.Float64s 来对 nums 进行排序。
  • 分情况进行判断,如果是偶数则返回俩个中位数的平均数。

将代码保存为 /home/project/median.go 文件。

运行程序

打开 WebIDE 的 Terminal 终端,输入以下命令查看输出:

go run median.go

图片描述

总结

本实验我们学习了使用 sort 包和 for 循环获得集合中位数的方法,了解他们的实验原理我们才能更好的使用他们。

转换 Lisp 式字符串

挑战介绍

把输入的字符串转换为烤肉串式类型。

挑战内容

本次挑战中,你需要把输入的字符串转换为烤肉串式类型。

输出参考格式为:

# 输入
some text
# 输出
some-text

挑战要求

  • 请自行在环境主目录/home/project下新建 convert_lisp.go 文件,并复制示例代码到文件中完成补充。补充完整后点击「提交检测」,系统将会给出判定结果。

图片描述

示例代码

package mainimport ("bufio""fmt""log""os""strings"
)func main() {fmt.Println("Input strings: ")inp := bufio.NewReader(os.Stdin)// res 为输出的Lisp字符串// s为输入的字符串var res strings, err := inp.ReadString('\n')if err != nil {log.Fatal("wrong input")}// 待补充部分fmt.Println(res)
}

小贴士

  • 可以使用 strings 包下的功能函数来进行处理。
  • 为了保证能被系统准确检测,挑战中的每一句话都非常重要,请仔细阅读。跳跃式浏览易导致挑战无法按要求通过。
参考代码

以下内容仅供参考,为了能有更好的学习效果,请尽量按自己的想法来完成挑战。

参考答案

package mainimport ("bufio""fmt""log""os""strings"
)func main() {fmt.Println("Input strings: ")inp := bufio.NewReader(os.Stdin)// res 为输出的Lisp字符串// s为输入的字符串var res strings, err := inp.ReadString('\n')if err != nil {log.Fatal("wrong input")}res = strings.Join(strings.Fields(s), "-")fmt.Println(res)
}

版权说明

内容编译来自 psampaz和30s-seconds-of-golang 的开源项目,它们分别使用 CC BY-SA 4.0 License,CC0-1.0 License,为了能够适合实验楼在线环境,我们修改了部分解题和单元测试代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/36721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

潮玩手办盲盒前端项目模版的技术探索与应用案例

一、引言 在数字化时代&#xff0c;随着消费者对个性化和艺术化产品的需求日益增长&#xff0c;潮玩手办和盲盒市场逐渐崭露头角。为了满足这一市场需求&#xff0c;前端技术团队需要构建一个功能丰富、用户友好的在线平台。本文旨在探讨潮玩手办盲盒前端项目模版的技术实现&a…

FuTalk设计周刊-Vol.025

&#x1f525;&#x1f525;AI漫谈 热点捕手&#x1f525;&#x1f525; 1、耗时半年&#xff0c;实地调研&#xff01;泣血2万字&#xff0c;破除你的人工智能焦虑《2023最全AI商业落地调研报告》 链接https://www.bilibili.com/video/BV1YB4y1f7GE?share_sourcecopy_web &…

Vue3路由守卫的理解

官网:导航守卫 | Vue Router 目录 1.路由类型 1.1导航守卫 1.2路由独享 1.3组件内守卫 2.路由元信息 1.路由类型 1.1导航守卫 全局 :所有路由都会触发 router.beforeEach((to,from,next)>{}) router.afterEach((to,form,next)>{}) 1.2路由独享 路由表中的组件 be…

计算机公共课面试常见问题:线性代数篇

目录 1. 特征向量和特征值代表什么含义&#xff1f; 2. 矩阵的秩是什么&#xff1f;满秩代表什么&#xff1f;不满秩呢&#xff1f; 3. 奇异值分解是什么&#xff1f; …

2024上海初中生古诗文大会倒计时4个多月:真题示例和独家解析

现在距离2024年初中生古诗文大会还有4个多月时间&#xff0c;我们继续来看10道选择题真题和详细解析&#xff0c;以下题目截取自我独家制作的在线真题集&#xff0c;都是来自于历届真题&#xff0c;去重、合并后&#xff0c;每道题都有参考答案和解析。 为帮助孩子自测和练习&…

改变AI历史的Transformer是如何帮助LLM大模型工作的?看图解密Transformer原理,看不懂算我输!

在过去的几年里&#xff0c;大型语言模型(LLM)的出现&#xff0c;为长达数十年的智能机器构建的探索中带来了巨大的飞跃。 这项基于试图模拟人类大脑的研究技术&#xff0c;也在近几年催生了一个新领域——Generative AI 生成式人工智能&#xff0c;简单理解就是可以 通过模仿…

llama-3 本地化部署实验

国产大模型的API 有限&#xff0c;编写langchain 应用问题很多。使用openai 总是遇到网络问题&#xff0c;尝试使用ollama在本地运行llama-3。结果异常简单。效果不错。llama-3 的推理能力感觉比openai 的GPT-3.5 好。 Ollama 下载 官网&#xff1a;https://ollama.com/downl…

武汉凯迪正大—漆包圆线软化击穿试验仪 漆包线检测仪器

产品功能 武汉凯迪正大电气有限公司生产KDZD-JC软化击穿试验仪用于检测3.00mm及以下漆包线在热状态下漆膜软化后的绝缘性能&#xff0c;根据设定的预热温度、试验时间、仪器自动完成对试样的预加热、加负荷、加试验电压&#xff0c;达到试验时间或试样被击穿时即卸负荷&#x…

基于ARM的通用的Qt移植思路

文章目录 实验环境介绍一、确认Qt版本二、确认交叉编译工具链三、配置Qt3.1、修改qmake.conf3.2、创建autoConfig.sh配置文件 四、编译安装Qt五、移植Qt安装目录六、配置Qt creator6.1、配置qmake6.2、配置GCC编译器6.3、配置G编译器6.4、配置编译器套件6.5、创建应用 七、总结…

【Linux杂货铺】Linux学习之路:期末总结篇1

第一章 什么是Linux? Linux 是 UNIX 操作系统的一个克隆&#xff1b;它由林纳斯 本纳第克特 托瓦兹从零开始编写&#xff0c;并在网络上众多松散的黑客团队的帮助下得以发展和完善&#xff1b;它遵从可移植操作系统接口&#xff08;POSIX&#xff09;标准和单一 UNIX 规范…

PLC数据采集案例

--------天津三石峰科技案例分享 项目介绍 项目背景 本项目为天津某钢铁集团下数字化改造项目&#xff0c;主要解决天津大型钢厂加氢站数字化改造过程中遇到的数据采集需求。项目难点PLC已经在运行了&#xff0c;需要采集里面数据&#xff0c;不修改程序&#xff0c;不影响P…

智能农业技术:物联网、无人机与机器人引领的绿色革命

在这个信息化与智能化并行的时代&#xff0c;农业——这个最古老的人类产业&#xff0c;正经历一场前所未有的科技变革。物联网&#xff08;IoT&#xff09;、无人机&#xff08;UAV&#xff09;和机器人技术的深度融合&#xff0c;正逐步构建起一个高效、精准、可持续的现代农…

博物馆环境监测系统:实际操作中的文物守护者

在博物馆的静谧空间中&#xff0c;每一件文物都承载着历史的重量和文化的精髓。为了确保文物的安全与完整&#xff0c;博物馆环境监测系统应运而生&#xff0c;它如同一位细心的守护者&#xff0c;时刻关注着文物的“健康”状况。本文将从实际操作的角度出发&#xff0c;探讨如…

百度ueditor如何修改图片的保存位置

背景 编辑器的保存图片是设置有默认规则的&#xff0c;但是服务器上一般会把图片路径设置为软连接&#xff0c;所以我就需要更改编辑器保存图片的路径&#xff0c;要不然&#xff0c;每次有新的部署&#xff0c;上一次上传的图片就会失效。先来看看编辑器默认的保存路径吧&…

MoneyPrinterPlus:AI自动短视频生成工具-微软云配置详解

MoneyPrinterPlus可以使用大模型自动生成短视频&#xff0c;我们可以借助Azure提供的语音服务来实现语音合成和语音识别的功能。 Azure的语音服务应该是我用过的效果最好的服务了&#xff0c;微软还得是微软。 很多小伙伴可能不知道应该如何配置&#xff0c;这里给大家提供一…

基于盲信号处理的声音分离——最小化增益的ICA算法

基于最小化增益的ICA算法的算法是依据混合信号经过盲信号分离会产生一定的噪声&#xff0c;为了使得分离后的信号与原信号的比值最小时&#xff0c;叫做增益最小。当增益越小时&#xff0c;分离后噪声越小&#xff0c;分离信号越接近原信号&#xff0c;分离算法的效果越好。这是…

激励视频广告的eCPM更高,每天的展示频次有限制吗?

在APP发展初期&#xff0c;由于DUA量级有限&#xff0c;所需的广告资源比较少&#xff0c;往往接入1-2家广告平台就能满足APP用户每日需要的广告展示量。而随着APP用户规模的扩大、广告场景的不断丰富&#xff0c;开发者要提升APP整体广告变现收益&#xff0c;一是可以尽可能多…

uView 2.0:uni-app生态的利剑出鞘,引领UI框架新纪元

引言 随着移动互联网的快速发展&#xff0c;跨平台应用开发成为了开发者们关注的焦点。uni-app&#xff0c;一个基于Vue.js的跨平台应用开发框架&#xff0c;因其高效、易用的特性而广受欢迎。在uni-app的生态系统中&#xff0c;UI框架的选择对于开发者而言至关重要。今天&…

云安全是全球组织最优先考虑的问题

关注公众号网络研究观&#xff0c;阅读内容全文。 随着越来越多的数据泄露和应用程序蔓延使防御变得更加复杂&#xff0c;云安全已成为全球组织关注的重点。 这是泰雷兹对全球 3,000 名 IT 安全专业人士进行的一项调查的结果&#xff0c;调查发现三分之一的受访者将云安全列为…

【YOLOv5/v7改进系列】引入RT-DETR的RepC3

一、导言 RT-DETR&#xff08;Real-Time Detection Transformer&#xff09;是一种针对实时目标检测任务的创新方法&#xff0c;它旨在克服YOLO系列和其他基于Transformer的检测器存在的局限性。RT-DETR的主要优点包括&#xff1a; 无NMS&#xff08;非极大值抑制&#xff09;…