欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 【力扣打卡系列】滑动窗口与双指针(三数之和)

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

2024/12/24 11:29:03 来源:https://blog.csdn.net/qq_45734745/article/details/143350870  浏览:    关键词:【力扣打卡系列】滑动窗口与双指针(三数之和)

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

搜索旋转排序数组
  • 题目描述
    在这里插入图片描述
  • 解题思路
    • 单独开一个函数来判断是否被染成蓝色
      • 以与最后一个元素的大小比较来确定在哪个段上
      • 分类讨论target、nums[key]、end的大小情况,来确定此处(nums[key])是否为蓝色
  • 代码参考
func is_blue(nums []int, target int, key int) bool{end := nums[len(nums)-1]if nums[key] > end{return (target <= nums[key]) && (target > end)}else{return (target <= nums[key]) || (target > end)}
}func search(nums []int, target int) int {// 开区间 (-1,n)left := -1right := len(nums)for left+1<right{mid := left + (right-left)/2if is_blue(nums,target,mid){right = mid}else{left = mid}}if right==len(nums) || nums[right] != target{return -1}return right
}
  • tips
    • 注意此处要取等号!
      • target <= nums[key]
    • is_blue函数的返回值为bool
    • 注意此处开区间的范围是(-1,nums[n])
    • 注意先判断返回值为-1的情况(条件为:right==len(nums) || nums[right] != target)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com