九章算法官网-原文网址

http://www.jiuzhang.com/problem/27/

题目

给一个整数集合S,定义S的子集D为连续子集当且仅当D中的整数构成连续的整数序列。求S的最大连续子集,即包含连续整数最多的子集。如{1, 3, 4, 100, 200, 2}的最大连续子集为{1,2,3,4}

解答

下面给出一个时空复杂度都是O(n)的方法:使用Hash表,索引当前找到的所有连续子集。对于每个集合,索引{第一个数: 集合}和{最后一个数: 集合},如:{1: {1, 2, 3},  3: {1, 2, 3}, 5: {5, 6}, 6: {5, 6}} 。遍历S的时候,假设遍历到数k,检查k-1为最后一个数和k+1为第一个数的集合在Hash表中是否存在,如果存在则和k一起合并为一个大的集合,删除之前的集合,并加入新的集合。这样每一次操作时间复杂度是O(1)的。最后找到Hash表中最大的集合输出即可。

面试官角度

这个题目的考点是Hash表。首先你可以答一个简单的排序的方法,复杂度是O(nlogn),这时候面试官会提示是否有更好的方法,于是要去想O(n)的方法。那么自然也就是需要考虑到S集合只能遍历一次。考虑使用一些O(1)复杂度的数据结构来加速运算,则想到Hash表。进而想到对于已经找到的集合,在Hash表中存储左右边界。

九章算法面试题27 最大连续子集相关推荐

  1. 九章算法面试题72 翻转链表I

    九章算法官网-原文网址 http://www.jiuzhang.com/problem/73/ 题目 给一个链表,然后我们要把这个链表进行翻转. 在线测试本题 http://www.lintcode. ...

  2. 九章算法面试题13 随机数生成器

    九章算法官网-原文网址 http://www.jiuzhang.com/problem/13/ 题目 有一个随机数生成器,每次等概率的返回1到5中的一个整数.现在需要你利用这个随机数生成器来设计一个新 ...

  3. 九章算法面试题54 带重复元素的全排列

    九章算法官网-原文网址 http://www.jiuzhang.com/problem/54/ 题目 给定一个带重复元素的整数集合,求出这个集合中所有元素的全排列.对于集合[1,1,2],其本质不同的 ...

  4. 九章算法面试题2 抄书问题

    九章算法官网-原文网址: http://www.jiuzhang.com/problem/2/ 题目 有n本书和k个抄写员.要求n本书必须连续地分配给这k个抄写员抄写.也就是说前a1本书分给第一个抄写 ...

  5. 九章算法面试题87 最小子数组

    原文网址 www.jiuzhang.com 问题详情 给定一个整数数组,找到一个具有最小和的子数组.返回其最小和. 在线评测本题: http://www.lintcode.com/zh-cn/prob ...

  6. 九章算法面试题86 合并排序数组

    原文网址 www.jiuzhang.com 问题详情 合并两个排序的整数数组A和B变成一个新的数组. 在线评测本题: http://www.lintcode.com/zh-cn/problem/mer ...

  7. 九章算法面试题81 岛屿的个数

    原文网址: www.jiuzhang.com 问题详情 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 在线评测本题: ...

  8. 一周刷爆LeetCode,算法da神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记

    一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记 教程与代码地址 P1 出圈了!讲课之外我们来聊聊 ...

  9. 66 道前端算法面试题附思路分析助你查漏补缺

    大家好,我是漫步. 今天来分享一篇干货,前端关于算法的分析不多,下文列举了66道前端算法面试题,希望对你有所帮助. 作者:Eno_Yao https://segmentfault.com/a/1190 ...

最新文章

  1. 超强后浪:14岁考上研究生,如今17岁的他或将成为全国最小的博士生!
  2. php acl控制,用PHP怎么实现一个ACL系统?
  3. 被人举报,经查属实!985高校公告:撤销其博士学位
  4. Github上十大热门可视化面板!再也不用担心画图啦!
  5. 6、SpringBoot+Mybatis整合------参数传递
  6. Linux c modbus 线程,Modbus读写模拟量寄存器详解
  7. linux sqlserver_SQL Server 与 MySQL存储引擎
  8. 【置顶】方立勋JavaWeb学习地址
  9. Marketing Cloud里取得系统contact数目的API
  10. 小程序沉浸式_古北水镇红叶祭嵌入戏精学院 全新文旅沉浸模式让游客嗨起来...
  11. java 线程执行结束_Java_如何等待子线程执行结束
  12. 从操作系统层面分析Java IO演进之路
  13. IndexError: list index out of range--Python报错原因及解决办法
  14. 容器、Docker与Kubernetes——Kubernetes的配置入门
  15. mysql 40014无效_Oracle 问题-ORA-14400: 插入的分区关键字未映射到任何分区
  16. 也谈谈Javascript中的几个怪异特性(上)
  17. 人工智能+教育的应用——教育的安全
  18. python必背入门代码-Python零基础入门学习笔记(一)
  19. python抓取直播源 并更新_虎牙直播源Python爬虫
  20. 如何关闭flashhelper的ff新推荐广告弹窗

热门文章

  1. LeetCode: 868. Transpose Matrix
  2. 最简单的使用python爬取图片
  3. 继sina想在csdc开博
  4. 完全平方数(C语言)
  5. mongodb的linux安装和客户端链接步骤
  6. 火狐Firefox浏览器所有历史版本下载地址
  7. 记一次:java获取真实ip地址问题
  8. C# P3色域计算、计算色域覆盖率、已知坐标求多边形面积计算、已知两条线的坐标求交点计算、坐标顺时针排序计算
  9. 沙特阿拉伯在中东实力很强大
  10. 利润表 本期金额 上期金额 修改本年累计