首页 > 其他分享 >第 367 场周赛(双指针,集合(upper_bound&lower_bound),前后缀分解)

第 367 场周赛(双指针,集合(upper_bound&lower_bound),前后缀分解)

时间:2023-10-18 20:14:13浏览次数:48  
标签:upper lower idx nums int bound

2903. 找出满足差值条件的下标 I

2905. 找出满足差值条件的下标 II

这两个题只有数据范围上面的差距

 这个题我们大体思路是维护双指针,枚举数字,维护集合。

这是灵神视频的代码

class Solution:
    def findIndices(self, nums: List[int], indexDifference: int, valueDifference: int) -> List[int]:
        max_idx = min_idx = 0
        for j in range(indexDifference, len(nums)):
            i = j - indexDifference
            if nums[i] > nums[max_idx]:
                max_idx = i
            if nums[i] < nums[min_idx]:
                min_idx = i

            if abs(nums[j] - nums[max_idx]) >= valueDifference:
                return [max_idx, j]
            if abs(nums[j] - nums[min_idx]) >= valueDifference:
                return [min_idx, j]

        return [-1, -1]

这是自己写时候的代码--真的维护了个集合

class Solution {
public:
    vector<int> findIndices(vector<int>& nums, int indexDifference, int valueDifference) {
        int n = nums.size();
         vector<int> res(2, -1);
        set<int> st;
        unordered_map<int, int> mp;
        int l;
        for(int r = indexDifference; r < n; r ++ ) {
            l = r - indexDifference;
            st.insert(nums[l]);
            mp[nums[l]] = l;
            //找到大于等于一个数的最小数
            int tmp = nums[r] + valueDifference;
            auto upper = st.lower_bound(tmp);
            if(upper != st.end()) {
                res[0] = mp[*upper];
                res[1] = r;
                break;
            }
            
            //找到小于等于一个数的最大数
            //upper_bound找到第一个大于tmp的数字,将返回的迭代器--就可找到小于等于一个数的最大数
            tmp = nums[r] - valueDifference;
            auto lower = st.upper_bound(tmp);
            if(lower != st.begin()) {
                lower -- ;
                res[0] = mp[*lower];
                res[1] = r;
                break;
            }
        }
        return res;
    }
};

 

 

2906. 构造乘积矩阵

二维前后缀分解题目

class Solution:
    def constructProductMatrix(self, grid: List[List[int]]) -> List[List[int]]:
        n, m = len(grid), len(grid[0])

        MOD = 12345
        p = [[0] * m for _ in range(n)]

        suf = 1
        for i in range(n - 1, -1, -1):
            for j in range(m - 1, -1, -1):
                p[i][j] = suf
                suf = suf * grid[i][j] % MOD

        pre = 1
        for i in range(n):
            for j in range(m):
                p[i][j] = p[i][j] * pre % MOD
                pre = pre * grid[i][j] % MOD
        
        return p

 

标签:upper,lower,idx,nums,int,bound
From: https://www.cnblogs.com/zk6696/p/17773214.html

相关文章

  • 论文阅读 Generalized Focal Loss: Learning Qualified and Distributed Bounding Box
    原始题目:GeneralizedFocalLoss:LearningQualifiedandDistributedBoundingBoxesforDenseObjectDetection中文翻译:GeneralizedFocalLoss:学习用于密集目标检测的QualifiedandDistributedBoundingBoxes发表时间:2020年6月8日平台:arxiv来源:南京理工-李翔文章......
  • Count of Sub-Multisets With Bounded Sum
    CountofSub-MultisetsWithBoundedSumYouaregivena 0-indexed array nums ofnon-negativeintegers,andtwointegers l and r.Return the countofsub-multisets within nums wherethesumofelementsineachsubsetfallswithintheinclusiv......
  • lower_case_table_names=1 mysql启动失败问题
    1先停掉mysql数据库2删除mysql数据,在初始话时,数据所在的位置3修改/etc/my.cnf配置,添加lower_case_table_names=14重新初始化./mysqld--user=mysql--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data--initialize-insecure--lower-case-table-names=1;注意初始化......
  • np.expand_dims: AxisError: axis 4 is out of bounds for array of dimension 4
    np.expand_dims axis=0时,[]加在最外面axis=1时,给每一行都加[]axis=2时,给每一个元素都加[]  x_train=np.expand_dims(X,axis=4)---------------------------------------------------------------------------AxisErrorTrac......
  • [QOJ4815] Flower's Land
    简要题意:给出一个\(n\)个点的树,对某个点\(i\)求包含某一个点的大小为\(k\)的权值最大的连通块,一个连通块的权值是其所有点的权值之和。\(n\le40000,k\le\min(3000,n)\)这个树上背包很难直接解决,考虑一种变体的树形背包:点分治。点分治后,设分治中心为\(rt\),那么如果要选......
  • flower插件-监视celery
    安装和使用:https://flower.readthedocs.io/en/latest/install.html#installationhttps://github.com/mher/flower/tree/master/examplescelery相关配置:#发送与任务相关的事件,以便可以使用flower之类的工具来监控任务#或者在启动worker服务时,使用-E参数。worker_send_task_......
  • 无涯教程-JavaScript - UPPER函数
    描述UPPER函数将文本转换为大写。语法UPPER(text)争论Argument描述Required/OptionalText您要转换为大写的文本。文本可以是引用或文本字符串。Required适用性Excel2007,Excel2010,Excel2013,Excel2016Example参考链接https://www.learnfk.com/javascri......
  • [js] 图解 event.pageX event.clientX event.offsetX getBoundingClientRect
    event.clientX、event.clientY鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性event.pageX、event.pageY类似于event.clientX、event.clientY,但它们使用的是文档坐标而非窗口坐标。这2个属性不是标准属性,但得到了......
  • 使用idea自带的反编译工具 [FernFlower]
    终端直接输入命令java-cp参数1org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler-dgs=true参数2参数3参数说明:参数1。IDEA安装目录下的反编译插件“java-decompiler.jar”所在路径,需要加上双引号。示例:"E:\IntelliJIDEA2020.2.2\plugins\java-decomp......
  • 报错:Invalid bound statement (not found): org.example.mapper.ZoneInfoMapper.getA
    错误org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound):org.example.mapper.ZoneInfoMapper.getAll解决方法<resources><resource><directory>src/main/java</directory>&......