当前位置: 首页 > 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.lryc.cn/news/463295.html

相关文章:

  • 蚂蚁华东师范大学:从零开始学习定义和解决一般优化问题LLMOPT
  • 价格游戏的终章:品牌如何在通货膨胀时代智取市场
  • CVTE Android面试题及参考答案
  • Docker实战:从入门到进阶
  • Jupyter Notebook汉化(中文版)
  • C#的小数位保留以及四舍五入
  • KNNImputer
  • RHCE例行性工作笔记
  • ros2 action server示例、拓展、练习
  • 【Go语言】安装及使用基础教程
  • 【大模型】3分钟了解提示(Prompt)工程、检索增强(RAG)和微调
  • 太速科技-509-基于XCVU13P的4路QSFP28光纤PCIeX16收发卡
  • C#从零开始学习(基本语法概念)(2)
  • 基于SSM+微信小程序的家庭记账本管理系统(家庭1)
  • MEMC功能详解
  • C++ | Leetcode C++题解之第493题翻转对
  • Git 修改分支名
  • [自动化测试:Selenium]:环境部署和Webdriver的使用
  • 51单片机——OLED显示图片
  • Gin 协程mysql客户端
  • 量子门电路开销——T门、clifford门、toffoli门、fredkin门
  • C++之《剑指offer》学习记录(1):类型转换关键字
  • 【Linux】平台设备驱动
  • 【Linux】命令行参数环境变量
  • libaom 源码分析:twopass_encoder.c 文件
  • ruoyi同时支持mysql+sqlserver+oracle+postgresql
  • 微信小程序绘制轨迹
  • UNION 联合查询
  • blender 理解 积木组合 动画制作 学习笔记
  • 关于 FreeSWITCH mod_sofia 注册过期时间的测试