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

【力扣打卡系列】滑动窗口与双指针(两数之和)

坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day1

两数之和
  • 题目描述
    在这里插入图片描述
  • 解题思路
    • 采用哈希表
      • 将nums[i] + nums[j] = target 转化成 nums[i] = target - nums[j]去思考
      • 新建一个map来存储,键为值(左边的),值为索引
      • 遍历数组nums的时候,先将当前键进行比对检验(看target - x键是否存在,存在就是找到了)
        • 如果没找到的话就先把当前的nums[j]作为当前map键(x,也就是nums[j]对应的值)值(j,也就是当前nums的索引)存进去
  • 代码参考
func twoSum(nums []int, target int) []int {idx :=map[int]int{}for j,x:=range nums{i,ok:=idx[target-x]if ok{return []int{i,j}}idx[x]=j}return nil
}
两数之和——输入有序数组
  • 题目描述
    在这里插入图片描述
  • 解题思路
    • 使用双指针
      • 因为有序,如果和已经比target小了,那么前面的值就可以不要了(操作表现为左指针后移)
      • 同理,如果当前和已经比target大了,那么后面的值就可以不要了(操作表现为左指针前移)
  • 代码参考
func twoSum(numbers []int, target int) []int {left,right :=0, len(numbers)-1for {if numbers[left] + numbers[right] == target{return []int{left+1,right+1}}if numbers[left] + numbers[right] > target{right--}if numbers[left] + numbers[right] < target{left++}}return nil
}
  • tips
    • for{}直接写=while true的效果
    • 定义了未使用的变量会报错
    • go中获取数组长度用len(nums)-1,注意根据题目要求决定要不要-1

http://www.mrgr.cn/news/53450.html

相关文章:

  • 优化漏洞扫描流程以保障企业数字化业务安全
  • 【AI学习】Mamba学习(八):HiPPO通用框架定义和方法
  • 小白学电路之电流镜仿真
  • OpenLayers:用于在 web 应用程序中创建互动地图
  • 目标检测最新SOTA模型D-FINE
  • 【分布式微服务云原生】《Redis 分布式锁的挑战与解决方案及 RedLock 的强大魅力》
  • UG NX12.0建模入门笔记:1.1 UG界面编辑
  • 【Gitee版】一篇教你如何快速入门git(详解)
  • Android 下通过触发 SIGTRAP 信号实现反调试
  • Broker 模式
  • 使用Git进行版本控制
  • TCP——Socket
  • 大型敏捷SAFe的关键职能最全解释
  • Python分析生存数据与截尾
  • Cisco Nexus N93108转换模式for Nxos to ACI mode失败案例
  • 笔试强训10.19
  • 银河麒麟V10系统+Windows10双系统启动顺序正确修改方法
  • 【动手学深度学习】7.5 批量规范化(个人向笔记)
  • 数据仓库宽表概述
  • 旋转轮胎泥泞奔驰-国产车mod版下载