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-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站