文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个数组 arr ,该数组表示一个从 1 到 n 的数字排列。有一个长度为 n 的二进制字符串,该字符串上的所有位最初都设置为 0

在从 1 到 n 的每个步骤 i 中(假设二进制字符串和 arr 都是从 1 开始索引的情况下),二进制字符串上位于位置 arr[i] 的位将会设为 1 。

给你一个整数 m ,请你找出二进制字符串上存在长度为 m一组 1 的最后步骤。一组 1 是一个连续的、由 1 组成的子串,且左右两边不再有可以延伸的 1 。

返回存在长度 恰好 为 m一组 1 的最后步骤。如果不存在这样的步骤,请返回 -1 。

示例 1:
输入:arr = [3,5,1,2,4], m = 1
输出:4
解释:
步骤 1:"00100",由 1 构成的组:["1"]
步骤 2:"00101",由 1 构成的组:["1", "1"]
步骤 3:"10101",由 1 构成的组:["1", "1", "1"]
步骤 4:"11101",由 1 构成的组:["111", "1"]
步骤 5:"11111",由 1 构成的组:["11111"]
存在长度为 1 的一组 1 的最后步骤是步骤 4 。示例 2:
输入:arr = [3,1,5,4,2], m = 2
输出:-1
解释:
步骤 1:"00100",由 1 构成的组:["1"]
步骤 2:"10100",由 1 构成的组:["1", "1"]
步骤 3:"10101",由 1 构成的组:["1", "1", "1"]
步骤 4:"10111",由 1 构成的组:["1", "111"]
步骤 5:"11111",由 1 构成的组:["11111"]
不管是哪一步骤都无法形成长度为 2 的一组 1 。示例 3:
输入:arr = [1], m = 1
输出:1示例 4:
输入:arr = [2,1], m = 2
输出:2提示:
n == arr.length
1 <= n <= 10^5
1 <= arr[i] <= n
arr 中的所有整数 互不相同
1 <= m <= arr.length

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-latest-group-of-size-m
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {public:int findLatestStep(vector<int>& arr, int m) {int n = arr.size(), i, ans = -1;vector<vector<int>> pos(n+2, vector<int>(2, -1));//存储该组的左右端点位置vector<int> len(n+1, 0);//长度为x的有多少组int l1,r1,l2,r2,n1,n2,nall,l,r;for(i = 0; i < n; ++i){l = r = arr[i];nall = 1;n1 = n2 = 0;if(pos[l-1][0] != -1)//左边存在{l1 = pos[l-1][0];r1 = pos[l-1][1];n1 = r1-l1+1;}if(pos[l+1][0] != -1)//右边存在{l2 = pos[l+1][0];r2 = pos[l+1][1];n2 = r2-l2+1;}if(n1){l = min(l, l1);nall += n1;len[n1]--;}if(n2){r = max(r, r2);nall += n2;len[n2]--;}len[nall]++;pos[l][0] = l;pos[l][1] = r;pos[r][0] = l;pos[r][1] = r;if(len[m])ans = i+1;}return ans;}
};

648 ms 127.7 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1562. 查找大小为 M 的最新分组相关推荐

  1. leetcode 169(简单)题解:给定一个大小为 *n* 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 *⌊ n/2 ⌋* 的元素。

    署名:csdn等网站博客copy产出,AI时代知识新搬运工 言归正传:写下这道题的个人理解 题干: 给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的 ...

  2. Leetcode04--给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。

    文章目录 题目 一.归并算法 二.二分查找法 题目 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的中位数. 进阶:你能设计一个时间复杂度 ...

  3. 七十六、Python | Leetcode二分查找和分治算法系列

    @Author:Runsen @Date:2020/7/4 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  4. 给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X

    1. 问题描述 给定排的数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X.给出一个O(nlg(n))的算法. 2. 解决思路 首先对数组进行排序,如果使用归并的排序的话,算法的复杂度在nl ...

  5. LeetCode学习-查找2-合并版

    LeetCode学习-查找 几个基本数据结构 一,查找表 349,求公共元素 242,判断两字符串是否字母相同 202,快乐数问题 290,模式匹配(需理清思路) 205,同构 451,对出现频率排序 ...

  6. linux如何把文件大小改为0,关于文件系统:Linux删除大小为0的文件

    本问题已经有最佳答案,请猛点这里访问. 如果它的大小为0,我如何在linux中删除某个文件.我想在crontab中执行它而不需要任何额外的脚本. l filename.file | grep 5th- ...

  7. 给定一个大小为 *n* 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 *⌊ n/2 ⌋* 的元素。

    多数元素 给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [3 ...

  8. ⭐算法入门⭐《堆》中等03 —— LeetCode 373. 查找和最小的K对数字

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   给定两个以升序排列的整 ...

  9. 采用链接分配方式进行外存分配时,可采用的两种形式及其特点。假定磁盘块大小为4K,对于128G的硬盘,其文件分配表FAT需占用多少存储空间?

    采用链接分配方式进行外存分配时,可采用的两种形式及其特点.假定磁盘块大小为4K,对于128G的硬盘,其文件分配表FAT需占用多少存储空间? 隐式链接:除文件的最后一个盘快外,每个盘快中都存有指向下一个 ...

最新文章

  1. 并行程序设计报告(MPI并行计算π,实现mandelbrot集)
  2. mapreduce工作流程_详解MapReduce中的五大编程模型
  3. android 代码混淆示例
  4. 检查本机显卡的cuda信息及适配cuda-sdk版本
  5. linux蜂鸣器驱动指令,linux蜂鸣器驱动 蜂鸣器--LINUX.doc
  6. select命名_Maya中Pymel写个带界面的重命名工具(一)
  7. 归并排序 Java实现
  8. Ant design的Table组件报错TypeError: rawData.some is not a function
  9. Maven Helper
  10. from collections import Counter计数器
  11. js实现批量下载文件
  12. JAVA访问控制权限
  13. 后台获取访问端的真实ip地址
  14. 同济大学计算机科学系下设几个专业,同济大学计算机科学与技术工程系简介
  15. Android 2.3应用开发实战
  16. 理解计算 从根号2到AlphaGo 第3季神经网络的数学模型
  17. 如何修清净心?(净空老法师法语)
  18. 阿里云函数计算使用教程
  19. 刷题回顾(持续更新)
  20. 我知道的风俗 和我喜欢的节日

热门文章

  1. c3p0-config.xml文件简单说明与备忘
  2. 在Python2.7下如何安装TA-lib库
  3. CentOS 7.3 系统安装配置图解教程
  4. VC使用sqlite
  5. Android 中如何计算 App 的启动时间?
  6. 数据库SQL优化大总结之 百万级数据库优化方案(转载)
  7. javascript正则表达式入门
  8. word粘贴至html特殊字符 粘贴后可能为乱码
  9. [zz from newsmth] 王大牛的Memory Model reading list
  10. 我等这个含蓄的技术男当上了CEO