当前位置: 首页 > news >正文

昆明网络公司网站2021网页qq登陆

昆明网络公司网站,2021网页qq登陆,建设网站网,网站建设南宁文章目录 三数之和 leetcode15map记录 失败#xff01;超出限制双指针法 四数之和 leetcode18 三数之和 leetcode15 知识补充#xff1a; map的key值必须是可以比较运算的类型#xff0c;不可以是函数、map、slice map记录 失败#xff01;超出限制 //得到结果后再去重 失… 文章目录 三数之和 leetcode15map记录 失败超出限制双指针法 四数之和 leetcode18 三数之和 leetcode15 知识补充 map的key值必须是可以比较运算的类型不可以是函数、map、slice map记录 失败超出限制 //得到结果后再去重 失败 func threeSum(nums []int) [][]int {L : len(nums)var intT stringresult : [][]int{}N : map[int]int{}G : map[string]int{}table : make([][]int, L)for i, _ : range table {table[i] make([]int, L)}for i, v : range nums {N[v] i}for i : 0; i L-1; i {for c : i 1; c L; c {table[i][c] nums[i] nums[c]if index, ok : N[-table[i][c]]; ok {if index ! i index ! c {order : []int{nums[i], nums[c], nums[index]}slices.Sort(order)for _, v : range order {intT fmt.Sprintf(intT, string(rune(v)))}if _, cont : G[intT]; !cont {result append(result, []int{nums[i], nums[c], nums[index]})}G[intT] 1intT }}}}// fmt.Print(table)return result }双指针法 拿这个nums数组来举例首先将数组排序然后有一层for循环i从下标0的地方开始同时定一个下标left 定义在i1的位置上定义下标right 在数组结尾的位置上。 依然还是在数组中找到 abc 使得a b c 0我们这里相当于 a nums[i]b nums[left]c nums[right]。 接下来如何移动left 和right呢 如果nums[i] nums[left] nums[right] 0 就说明 此时三数之和大了因为数组是排序后了所以right下标就应该向左移动这样才能让三数之和小一些。 如果 nums[i] nums[left] nums[right] 0 说明 此时 三数之和小了left 就向右移动才能让三数之和大一些直到left与right相遇为止。 // 自我救赎的双指针法 func threeSum(nums []int) [][]int { slices.Sort(nums) L : len(nums) record : [][]int{}//第一个数 for i, i2 : range nums[:L-2] {//左指针为第二个数右指针为第三个数。左指针每次从第一个数后一个开始右指针则从最末尾开始 left, right : i1, L-1//第一个数的去重 如{-1 -1 0 1}[0,2,3]和[1,2,3]都满足要求但是其数组都为[-1,0,1]应该去除之一。所以说当检测当本次循环与上次一致的话直接跳过 if i 0 i2 nums[i-1] { continue }//循环的结束条件为左指针与右指针重合即第二个数和第三个数序号一致 for left right { if i2nums[left]nums[right] 0 { record append(record, []int{i2, nums[left], nums[right]}) left right--//对第二个数进行去重 for nums[left] nums[left-1] left L-1 { left }//对第三个数进行去重 for nums[right] nums[right1] right 1 { right-- } } if i2nums[left]nums[right] 0 { right-- } if i2nums[left]nums[right] 0 { left } }} return record }四数之和 leetcode18 与三数之和思路大体相同代码如下 // 自我救赎的双指针法 func fourSum(nums []int, target int) [][]int { slices.Sort(nums) L : len(nums) if L 4 { return nil }record : [][]int{}//第一个数 for i, val : range nums[:L-3] { if i 0 val nums[i-1] { continue }//第二个数 for i2 : i 1; i2 L-2; i2 { val2 : nums[i2] //左指针为第二个数右指针为第三个数。左指针每次从第一个数后一个开始右指针则从最末尾开始 left, right : i21, L-1//第一个数的去重 如{-1 -1 0 1}[0,2,3]和[1,2,3]都满足要求但是其数组都为[-1,0,1]应该去除之一。所以说当检测当本次循环与上次一致的话直接跳过 if i2 i1 val2 nums[i2-1] { continue }//循环的结束条件为左指针与右指针重合即第二个数和第三个数序号一致 for left right { if valval2nums[left]nums[right] target { record append(record, []int{val, val2, nums[left], nums[right]}) left right--//对第二个数进行去重 for nums[left] nums[left-1] left L-2 { left }//对第三个数进行去重 for nums[right] nums[right1] right 2 { right-- } } if valval2nums[left]nums[right] target { right-- } if valval2nums[left]nums[right] target { left } }}}return record }
http://www.dnsts.com.cn/news/83528.html

相关文章:

  • 易烊千玺个人网站网站开发报价单 doc
  • 怎么做自己的发卡网站dz网站模板
  • 建设好学校网站免费一键生成名片
  • 丝足网站的建设设计营销型网站域名
  • 嘉兴企业网站推广网站后台管理软件
  • 重庆建设教育网站wordpress程序一直503
  • 沂seo网站推广自己建商城型网站
  • 城乡建设厅官方网站企业营销型展厅设计价目表
  • 福田建网站多少钱滨州的网站开发
  • 关于网站集约化建设公函国内新闻最新消息2021
  • 多语言商城网站开发拍大师官方网站 图片做视频
  • 杭州做网站推广公司推荐东莞企业网站建设推广
  • 成立一间网站开发公司seo实战技巧
  • 专业做网站哪家强wordpress 删除作者信息
  • 深圳二维码网站建设深圳市招聘信息网站
  • 网站开发 税率企业管理网站的来历
  • 创意经济型网站建设如何进行app推广
  • 建设手机银行网站wordpress 插件本地化
  • go语言做的网站wordpress充值密码没有链接
  • flash个人音乐网站模板源码python开源网站源码
  • 外贸工厂 网站建设做网站和做软件一样吗
  • 滨州网站网站建设做网站美工工资多少
  • 常平镇网站仿做百度联盟广告点击一次收益
  • 做机械的老板都看什么网站直播平台网站建设
  • 网站顶部导航代码单位网站建设费用
  • 为什么四川省建设厅网站打不开如何开网页游戏
  • 网站推广的工具南昌地宝网租房信息
  • 中国建设银行贷款网站网站设置首页连接分类页的视频教程
  • 卖游戏辅助的网站怎么建设小程序代码做网站
  • 黑龙江建设局网站东莞市专注网站建设服务机构