【LeetCode周赛】2022上半年题目精选集——双指针

news2024/9/20 18:33:19

文章目录

https://leetcode.cn/circle/discuss/G0n5iY/

2271. 毯子覆盖的最多白色砖块数

2271. 毯子覆盖的最多白色砖块数
在这里插入图片描述
提示:
1 <= tiles.length <= 5 * 10^4
tiles[i].length == 2
1 <= li <= ri <= 10^9
1 <= carpetLen <= 10^9
tiles 互相 不会重叠 。

思路

只看题目文本描述比较难以理解,看看图片示例就好了。

朴素的想法就是这块毯子一路滑过去,看看过程中最多会覆盖多少个瓷砖就好了。

但是我们不能枚举位置,而是应该枚举瓷砖大块,也就是枚举 tiles 中的每个元素(看看数据范围就知道为什么了)

在枚举之前,需要先升序排序。

枚举的过程中记录左右端点,计算当前覆盖的瓷砖数(每次计算的瓷砖数是以当前瓷砖块为结尾时,毯子可以覆盖的瓷砖数),更新答案即可。

代码

class Solution {
    public int maximumWhiteTiles(int[][] tiles, int carpetLen) {
        Arrays.sort(tiles, (a, b) -> a[0] - b[0]);
        int ans = 0, sum = 0;
        for (int l = 0, r = 0; r < tiles.length; ++r) {
            sum += tiles[r][1] - tiles[r][0] + 1;   // 记录被覆盖的瓷砖块中一共有几块瓷砖
            while (tiles[l][1] <= tiles[r][1] - carpetLen) {
                sum -= tiles[l][1] - tiles[l][0] + 1;
                ++l;
            }
            // 更新答案时需要减去第一个瓷砖块中未被覆盖的瓷砖
            ans = Math.max(ans, sum - Math.max(0, (tiles[r][1] - carpetLen - tiles[l][0] + 1)));
        }
        return ans;
    }
}

在这里插入图片描述

吐槽:这道题难度居然有 2022,应该是好多人没看懂题。

2302. 统计得分小于 K 的子数组数目

2302. 统计得分小于 K 的子数组数目
在这里插入图片描述

提示:
1 <= nums.length <= 10^5
1 <= nums[i] <= 10^5
1 <= k <= 10^15

代码1——前缀和+滑动窗口

由于需要计算子数组的元素之和,所以可以使用前缀和。

由于元素都是正数,所以显然子数组越长分数越大,因此可以使用双指针滑动窗口,枚举右边界,移动左边界。

class Solution {
    public long countSubarrays(int[] nums, long k) {
        long ans = 0;
        int n = nums.length;
        long[] sum = new long[n + 1];
        for (int i = 1; i <= n; ++i) sum[i] = sum[i - 1] + nums[i - 1];
        for (int l = 0, r = 0; r < n; ++r) {
            long score =  (sum[r + 1] - sum[l]) * (r - l + 1);
            while (score >= k) {
                ++l;
                score =  (sum[r + 1] - sum[l]) * (r - l + 1);
            }
            ans += r - l + 1;
        }
        return ans;
    }
}

代码2——双指针+ O ( 1 ) O(1) O(1)空间 (代码1的优化)

https://leetcode.cn/problems/count-subarrays-with-score-less-than-k/solution/by-endlesscheng-b120/

可以优化一下,将计算前缀和的过程放进双指针过程中,省去前缀和数组。

class Solution {
    public long countSubarrays(int[] nums, long k) {
        long ans = 0, sum = 0;
        for (int l = 0, r = 0; r < nums.length; ++r) {
            sum += nums[r];
            while (sum * (r - l + 1) >= k) {
                sum -= nums[l++];
            }
            ans += r - l + 1;
        }
        return ans;
    }
}

在这里插入图片描述

总的来说单纯的双指针算法还是挺简单的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/729695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Win10安全中心怎么关闭?Win10安全中心关闭方法

Win10安全中心怎么关闭&#xff1f;关闭Win10的安全中心可以帮助用户自定义系统的安全和防护设置&#xff0c;但有些用户不知道怎么操作才能关闭安全中心&#xff0c;首先用户需要打开Win10电脑的设置选项&#xff0c;接着打开安全中心&#xff0c;然后关掉安全中心的实时保护、…

STM32CubeMX使用示例---生成LED闪烁工程

这里记录一下通过STM32CubeMX配置STM32G030C8T6&#xff0c;生成LED闪烁的示例工程的过程&#xff0c;用来学习使用STM32CubeMX&#xff1b; 以STM32G030C8T6 PB4 脚做LED 输出闪烁为例&#xff0c;外部8MHZ 晶振,系统主频64MHZ,LED 灯1 秒钟闪烁一次做一个示例程序。 文章目录…

Go语言程序设计(八)数据输入输出

Go语言提供了多种用于实现数据输入、输出的函数,这些函数在fmt包中实现。在输入、输出数据时,首先要导入fmt包,导入语句为: import "fmt" 一、标准输出函数 数据输出(Data Output),是计算机对各类输入数据进行加工处理后,将结果以用户所要求的形式输出到标准输出设…

OpenCV使用`clone()`函数来进行深度拷贝,拷贝后的`image_clone`修改不会影响原始图像`image`

这是完整的代码: #include <opencv2/opencv.hpp>int main() {// 创建一个白色的图像cv::Mat image(500, 500, CV_8UC3, cv

SpringCloud微服务(三)RabbitMQ、SpringAMQP、elasticsearch、DSL、MQ、ES详细介绍

目录 一、初始MQ 同步调用 异步调用 什么是MQ 执行下面的命令来运行MQ容器&#xff1a; 如果冲突了&#xff0c;可以先查询 RabbitMQ概述 常见消息模型 HelloWorld案例 二、SpringAMQP 引入依赖 Work Queue 消费预取限制 ​编辑 发布、订阅 发布订阅Fanout Ex…

作物计数方法之合并信息生成json标签的方法

在研究农情的方向中&#xff0c;作物计数是一个很重要的方向&#xff0c;前文已经提到了一些要使用的方法 前文链接&#xff1a;作物计数方法汇总_追忆苔上雪的博客-CSDN博客 在研究计数过程中&#xff0c;还需要将上文处理过的数据信息存入json文件方便后续使用&#xff0c;这…

Array.from详解

德玛玩前端 2023-07-07 在以往的开发中&#xff0c;对于Array.from的了解是from是Array的静态方法&#xff0c;可以将类数组和迭代对象转换为数组&#xff0c;可以结合Set集合快速实现数组的去重&#xff0c;一直以为Array,from()只有一个参数&#xff0c;不是传类数组就是可迭…

idea打包项目时报错 There are test failures

出现这个错误时要点击跳过测试类的按钮&#xff0c;图中的这个圆圈&#xff0c;可以看到test已经被划掉了 再点击package打包&#xff0c;成功。

启航RK3588边缘计算之旅:保定飞凌OK3588开发板

启航RK3588边缘计算之旅&#xff1a;保定飞凌OK3588开发板 引言&#xff1a; 随着人工智能技术的飞速发展&#xff0c;人们对于能够提供高性能和灵活性的智能设备有着极大的需求。作为人工智能领域的先锋企业&#xff0c;保定飞凌公司在设计和生产高性能处理器方面取得了卓越的…

在服务器从零开始配置conda、pytorch、cv2

疯掉了 希望是最后一次 0.配置WinSCP和PUTTY 在Windows上使用PuTTY进行SSH连接-腾讯云开发者社区-腾讯云 1.配置conda 如何在Linux服务器上安装Anaconda&#xff08;超详细&#xff09;_linux安装anaconda_流年若逝的博客-CSDN博客 实验室远程登录Linux服务器并配置环境_远…

Linux性能优化实践——平均负载

平均负载&#xff08;Load Average&#xff09; 当我们输入uptime命令时&#xff0c; 这里有几个参数&#xff0c;解释如下 0:54 &#xff1a;当前时间&#xff1b;up 50 mins&#xff1a;系统运行时间&#xff1b;2 users&#xff1a;正在登录用户数&#xff1b;load avera…

活动回顾| 萌啦科技亮相第三届东南亚大会,用数据赋能助力东南亚出海新机遇!

“聚焦深耕”资源对接 6月30日&#xff0c;由DNY123东南亚卖家导航主办的聚焦深耕——第三届东南亚电商本地化&品牌资源对接会在深圳圆满结束。 本次对接会以"聚焦深耕"为主题&#xff0c;旨在推动东南亚电商业务的本地化发展&#xff0c;并促进品牌资源的互通与…

考研的尽头是考公?

2022年12月23日&#xff0c;作为中国诞生于互联网的职业考试培训行业市场领导者的粉笔有限公司&#xff08;“粉笔”或“公司”&#xff09; &#xff0c;早前通过港交所上次聆讯后开始招股。 据悉&#xff0c;粉笔计划发售20&#xff0c;000&#xff0c;000股股份&#xff08;…

win系统删除oracle数据文件恢复---惜分飞

有客户联系我们,说win平台下的数据库,在由于空间紧张,在关闭数据库的情况下删除的两个数据文件,导致数据库无法正常访问很多业务表,需要对其进行恢复,查看alert日志发现大概操作,删除文件之后,启动数据库失败 Completed: alter database mount exclusive alter database open E…

十八、Jenkins(centos7)执行接口自动化测试脚本,飞书推送测试结果消息

十八、Jenkins&#xff08;centos7&#xff09;执行接口自动化测试脚本&#xff0c;飞书推送测试结果消息 1.创建 Freestyle project 项目 2. 输入git仓库地址 https://gitee.com/HP_mojin/pytest_allure_request_20220811 3. 增加构建步骤-Execute shell&#xff08;Jenkins…

TiDB架构中有多少个模块?核心的组件是哪个?

TiDB 集群主要包括三个核心组件&#xff1a;TiDB Server&#xff0c;PD Server 和 TiKV Server。此外&#xff0c;还有用于解决用户复杂 OLAP 需求的 TiSpark 组件和简化云上部署管理的 TiDB Operator 组件。 TiDB架构图解 1. TiDB Server TiDB Server 负责接收 SQL 请求&…

【数据结构导论】第 4 章:树和二叉树

目录 一、树的基本概念 &#xff08;1&#xff09;树的定义 &#xff08;2&#xff09;树的逻辑表示 &#xff08;3&#xff09;树的相关术语 &#xff08;4&#xff09;树的基本运算 二、二叉树 &#xff08;1&#xff09;二叉树的基本概念 ① 定义 ② 特点 ③ 二叉…

【玩转 Cloud Studio】- 云编程之旅

Cloud Studio介绍 Cloud Studio 是基于浏览器的集成式开发环境&#xff08;IDE&#xff09;&#xff0c;为开发者提供稳定的云端工作站。在使用 Cloud Studio 时无需安装&#xff0c;打开浏览器即可快速启动项目。底层资源自动弹性扩缩&#xff0c;极大地节省成本&#xff0c;…

【课程总结】2023中科大-数字图像分析-期末考试试卷回忆版及往年考题汇总

2023中科大-数字图像分析-期末考试试卷回忆版及汇总 写在前面&#xff1a;一&#xff0c;2023-2024春 期末考试题目回忆二&#xff0c;往年考试题目回忆2.1 2017-2018秋2.2 2018-2019秋2.3 2018-2019 春2.4 2019-2020 秋2.5 2019-2020 春2.6 2020-2021 秋2.7 2021-2022 春2.8 2…

物联网会是下一个支柱产业吗?

近年来&#xff0c;物联网 (IoT) 无疑已成为一个重要且快速增长的行业。尽管绝对确定地预测未来具有挑战性&#xff0c;但许多专家和分析师认为&#xff0c;物联网有潜力成为支柱产业&#xff0c;对各个行业产生变革性影响。 物联网是指由可以收集、交换和分析数据的互连设备、…