LeetCode 0001 two-sum.go
2021/7/12 23:20:13
本文主要是介绍LeetCode 0001 two-sum.go,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
给定一个整数数组nums和一个整数目标值target 请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 思路: 1、使用随机数产生整数切片nums 2、遍历切片nums,求任意两个元素之和,如果和为目标值target,则返回数组下标 注意: 1、随机数不重复 2、随机数为真随机数
package main import ( "fmt" "math/rand" "time" ) //定义一个切片,存放随机数 var nums []int var target int //定义一个二位切片,存放符合条件的元素下标对 var indexOfSlice [][]int //初始化切片 func initSlice() { nums = make([]int, 0) indexOfSlice = make([][]int, 0) } //生成随机数切片及目标值 func generateNumsSlice() ([]int, int) { //生成不同种子 rand.Seed(time.Now().Unix()) //声明一个变量,接收随机数 var slicedLength int //生成一个随机数,作为切片长度 for { slicedLength = rand.Intn(10) //如果生成的随机数为0或1,则跳过后面的乘法操作,避免panic并确保生成的切片长度大于1 if slicedLength == 0 || slicedLength == 1 { continue } target = slicedLength * 10 break } //定义死循环,直到达到随机数数量,且无重复元素结束循环 LOOP: for { //切片长度*10作为source num := rand.Intn(slicedLength * 10) //检查重复num,如果slice中已存在,则重新生成num for i := 0; i < len(nums); i++ { if nums[i] == num { goto LOOP } } //将随机数追加至切片 nums = append(nums, num) //当切片长度符合设定长度时,跳出循环 if len(nums) == slicedLength { break } } return nums, target } //计算切片中任意两元素之和,并将符合目标值的元素放入二维切片中 func calSum() [][]int { fmt.Printf("切片内容:%v\n目标值为:%d\n", nums, target) count := 0 //遍历切片元素,计算两个元素之和 for i := 0; i < len(nums); i++ { for j := i + 1; j < len(nums); j++ { sum := nums[i] + nums[j] //若两元素之和为目标值,则将元素对应下标存入indexOfSlice if sum == target { indexOfSlice = append(indexOfSlice, []int{i, j}) count++ } } } return indexOfSlice } //打印符合目标值的元素下标 func printIndex() { if len(indexOfSlice) == 0 { fmt.Println("没有符合目标值的元素!") } else { fmt.Println(indexOfSlice) } } func main() { initSlice() generateNumsSlice() calSum() printIndex() }
这篇关于LeetCode 0001 two-sum.go的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南