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

网站开发意义十二师建设局网站

网站开发意义,十二师建设局网站,可以做视频网站的源码,巴中微信开发 做网站双指针思想介绍 双指针(Two Pointers)是一种在数组或链表等线性结构中常用的算法技巧,通过使用两个指针(索引或引用)以不同的速度或方向遍历数据结构,从而高效解决问题。双指针通常用于优化暴力解法&#…

双指针思想介绍

双指针(Two Pointers)是一种在数组或链表等线性结构中常用的算法技巧,通过使用两个指针(索引或引用)以不同的速度或方向遍历数据结构,从而高效解决问题。双指针通常用于优化暴力解法,将时间复杂度从 O(n²) 降低到 O(n) 或 O(n log n)。

常见应用场景:
  1. 快慢指针:用于链表中的环检测、找中点等(如快指针每次走两步,慢指针走一步)。
  2. 左右指针:用于有序数组的两数之和、反转数组等(如一个指针从左向右,另一个从右向左)。
  3. 滑动窗口:通过调整两个指针的间隔解决子数组/子串问题(如最小覆盖子串)。

蓝桥杯中的双指针题目示例

以下是蓝桥杯竞赛中可能用到双指针思想的题目及其解法思路:

1. ​两数之和(有序数组)​
  • 题目描述:给定一个升序排列的数组和一个目标值,找到数组中两个数的和等于目标值,返回它们的索引。
  • 双指针解法
    • 初始化左指针 left = 0,右指针 right = len(nums) - 1
    • 比较 nums[left] + nums[right] 与目标值:
      • 若和等于目标值,返回结果;
      • 若和小于目标值,left++(需要更大的数);
      • 若和大于目标值,right--(需要更小的数)。
  • 时间复杂度:O(n)。
def twoSum(nums, target):left, right = 0, len(nums) - 1while left < right:s = nums[left] + nums[right]if s == target:return [left, right]elif s < target:left += 1else:right -= 1return []
2. ​三数之和(去重)​
  • 题目描述:找到数组中所有不重复的三元组,满足 a + b + c = 0
  • 双指针解法
    • 先排序数组,固定一个数 nums[i],然后用双指针在 i+1 到末尾寻找两数之和等于 -nums[i]
    • 需跳过重复值以避免重复解。
  • 时间复杂度:O(n²)。
 

python

复制

def threeSum(nums):nums.sort()res = []for i in range(len(nums) - 2):if i > 0 and nums[i] == nums[i - 1]:continue  # 去重left, right = i + 1, len(nums) - 1while left < right:s = nums[i] + nums[left] + nums[right]if s < 0:left += 1elif s > 0:right -= 1else:res.append([nums[i], nums[left], nums[right]])while left < right and nums[left] == nums[left + 1]:left += 1  # 去重while left < right and nums[right] == nums[right - 1]:right -= 1  # 去重left += 1right -= 1return res
3. ​盛最多水的容器(贪心+双指针)​
  • 题目描述:给定一个数组表示容器的高度,找到两条线使得它们与 x 轴构成的容器能装最多的水。
  • 双指针解法
    • 初始化 left = 0right = len(height) - 1max_area = 0
    • 每次移动较短的边(因为移动长边不可能增加面积)。
  • 时间复杂度:O(n)。
 

python

复制

def maxArea(height):left, right = 0, len(height) - 1max_area = 0while left < right:area = (right - left) * min(height[left], height[right])max_area = max(max_area, area)if height[left] < height[right]:left += 1else:right -= 1return max_area
4. ​蓝桥杯真题示例:日志统计(滑动窗口)​
  • 题目链接:蓝桥杯 2018 省赛
  • 问题描述:给定 N 条日志的点赞时间,统计在任意长度为 D 的时间段内点赞不少于 K 次的帖子。
  • 双指针解法
    • 按时间排序后,用滑动窗口(双指针)统计窗口内的点赞数,若满足条件则标记帖子。
  • 代码片段
     

    python

    复制

    logs = [...]  # 日志数据格式: [(时间, 帖子id), ...]
    logs.sort()
    count = {}  # 记录当前窗口内各id的点赞数
    res = set()
    left = 0
    for right in range(len(logs)):id = logs[right][1]count[id] = count.get(id, 0) + 1while logs[right][0] - logs[left][0] >= D:count[logs[left][1]] -= 1left += 1if count[id] >= K:res.add(id)

总结

双指针的核心是通过协同移动两个指针减少不必要的计算,常用于:

  • 有序数组的搜索(如两数之和)。
  • 滑动窗口问题(如子串、区间统计)。
  • 链表操作(如快慢指针)。

在蓝桥杯竞赛中,双指针常与排序、贪心等结合,需注意边界条件和去重处理。

http://www.dtcms.com/wzjs/548593.html

相关文章:

  • 免费行情软件app网站红色反向代理wordpress
  • 改进网站建设英文作文家装设计公司起名
  • 门户网站建设网站改版怎样做301
  • 做印刷网站公司哪家好wordpress导出出错
  • 一定得做网站认证关于网站建设的网站
  • 廊坊公司网站建设crm客户管理系统功能
  • 南昌公司网站建设模板做catia数据的网站
  • 网站建设什么原因最主要做宽屏网站
  • 淘宝客登记新网站惠东住房建设局网站
  • 深圳建设一个网站制作公司网站设计客户需求
  • 西安中交建设集团网站阜阳做网站的公司
  • 企业网站搭建 网络活动策划编程线上课程哪个机构好一些
  • 网站建设搜索优化app推广新闻营销wordpress主题摘要字数
  • 做网站要学什么软件好wordpress防黑
  • 做网上夫妻去哪个网站小红书体现的网络营销方式
  • 做调查可以赚钱的网站搜索引擎网络推广方法
  • 如何用模板建站专业的网站公司到哪里找
  • 湖北建设工程造价协会网站天猫淘宝旗舰店
  • 重生做门户网站的小说PHP长沙WordPress
  • jsp旅游网站的建设公司一般有哪些部门
  • 山东省质量建设监督总站网站温州seo公司
  • 做个简单的公司网站要多少钱wordpress 建论坛
  • 承德网站制作公司协会网站建设方案书
  • 中国建设招标网 官方网站济南新风向网站建设
  • 制作网站 美工唐山网站建设选汉狮
  • 网站的程序怎么做网站的外链怎么做
  • 怎样做免费企业网站wordpress文章排序错误
  • 帮人做ppt的网站4399游戏网页版
  • 58同城网站建设企业推广哪个平台好
  • 百度免费建网站电商网站图片