Leetcode 1146. Snapshot Array

该博客介绍了如何运用二分搜索算法解决LeetCode上的1146题——Snapshot Array。作者建立了一个特殊的list,其中每个位置包含一个list,存储[snap_id, val]对。在获取特定snap_id的值时,通过二分搜索找到等于或小于目标snap_id的右边界位置。由于二分搜索的目标是snap_id而非val,因此需要确保找到的是右most位置,或者搜索snap_id+1。这种方法的时间复杂度为O(logS),空间复杂度为O(S),其中S为set的调用次数。" 119518310,1477485,WPF编程:RadioButton控件深度解析与应用,"['WPF', 'GUI开发', '.NET框架', '前端开发']
摘要由CSDN通过智能技术生成

题目

在这里插入图片描述

解法:二分搜索

建立一个list,每个list的位置是一个list,记录[snap_id,val]的pair。每次get的时候二分搜索等于这个snap id的right most位置或者第一个小于这个snap id的位置。bisect.bisect:1. bisect(list, num, beg, end) :- This function returns the position in the sorted list, where the number passed in argument can be placed so as to maintain the resultant list in sorted order. If the element is already present in the list, the right most position where element has to be inserted is returned. This function takes 4 arguments, list which has to be worked with, number to insert, starting position in list to consider, ending position which has to be considered.
值得注意的是,这边二分搜索的不是值,而是[snap_id,val]的pair,所以需要把val设为最大值保证找到的是right most的位置或者直接去搜索snap id+1

class 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值