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

代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素、209.长度最小的子数组

 704. 二分查找

思路:刷过很多次了,就是双指针思想,初始化一个在数组最左边的指针index_l,一个在最右边的指针index_r,当index_l < index_r 的时候通过判断index_l 和 index_r所确定的区间,缩小区间,最后夹逼出我们的目标值。

注意的点:最终状态会有两个 :1.l与r相等 最后的最终状态 直接在函数最后返回,2.l 和 r的mid是最终结果,此时我们就直接返回 否则最后 lr不会想等,不好确定返回哪个值

题解:

func search(nums []int, target int) int {r := len(nums) - 1l := 0mid := (l + r) / 2for l < r {if target < nums[mid] {r = mid - 1} else if target > nums[mid] {l = mid + 1} else {return mid}mid = (l + r) / 2}if nums[mid] != target {return -1}return mid
}

时间复杂度:O(n)

空间复杂度:O(1) 

27. 移除元素

思路:快慢指针,两个指针从头开始走,用快指针来更新慢指针指向的值,当且仅当慢指针指向的位置不是目标值,慢指针才移动,快指针正常移动到结尾,一次对整个数组的遍历即实现了删除。

注意的点:注意慢指针的更新条件

题解:

func removeElement(nums []int, val int) int {nums_len := len(nums)fast := 0slow := 0for fast < nums_len{nums[slow] = nums[fast]if(nums[slow] != val){slow++}fast++}return slow
}

  

时间复杂度:O(n)

空间复杂度:O(1) 

 

977.有序数组的平方

思路:一开始只想到了暴力解,想着把所有数平方了并排序,看了题解发现可以用双指针,然后按照双指针写了一次

注意的点:多考虑优化,

暴力题解:

func sortedSquares(nums []int) []int {for i,num := range nums{nums[i] = num * num}sort.Ints(nums)return nums
}

 优化:

func sortedSquares(nums []int) []int {index := len(nums) - 1res := make([]int,len(nums))l := 0r := len(nums) - 1for l < r {if nums[r]*nums[r] >= nums[l]*nums[l] {res[index] = nums[r] * nums[r]index--r--} else {res[index] = nums[l] * nums[l]index--l++}}if (l == r) {res[index] = nums[r]*nums[r]}return res
}

  

http://www.wxhsa.cn/company.asp?id=6796

相关文章:

  • 从 MLPerf Storage v2.0 看 AI 训练中的存储性能与扩展能力
  • Revit二次开发 钢筋生成API(二)
  • 创建会计凭证报错:FI/CO接口:待更新的不一致的FI/CO凭证标题数据(转)
  • Uri uri = new Uri(Path); 这行代码的作用
  • Qt函数方法传入参数未使用-警告warning错误error提示解决
  • mysql 性能监控,关键指标解析与优化案例剖析
  • 如何提取docker镜像用于NAS手动安装
  • 百家大型企业共同选择:2025年人力资源管理系统权威推荐榜单
  • 不修改环境变量的基础下使用Java
  • new 和make 切片和map
  • 三台ubuntu22相互免密登录最快
  • 状态机
  • 设计模式
  • Rhinoceros 8.23.25251.13001 犀牛3D建模
  • Git 常用操作指南
  • 《深入理解计算机系统》计算机系统漫游(一) - Invinc
  • 从几何分离到语义理解:深度解析3D点云分割与语义分割的本质区别
  • 欧拉筛(线性筛)算法分析
  • 2021年安徽省大数据与人工智能应用竞赛 大数据(网络赛)-高职组赛题
  • 一些写了和没写的数学!
  • 【光照】[自发光Emission]以UnityURP为例
  • mybatis-plus初体验,解决报错Invalid value type for attribute factoryBeanObjectType: java.lang.String
  • 04_UDP协议
  • 从0到1搭建数据分析自动化程序链,AI应用架构师的实战指南
  • IOS App技术支持网址(URL)
  • Alexandresku设计的loki小对象内存分配器
  • C++ 内存管理
  • 浅谈制氢电源及英飞凌解决方案
  • 微算法科技(NASDAQ:MLGO)研究分布式量子计算,释放量子计算潜能
  • AI 重塑招聘三角:Moka 招聘智能体如何实现 HR、候选人与企业的三方共赢