区间类问题

1 Missing Interval

    public List<String> findMissingRanges(int[] nums, int lower, int upper) {
List<String> res = new ArrayList<>();
if (nums == null || nums.length == ) {
return res;
}
addRange(res, lower, (long)nums[] - );
for (int i = ; i < nums.length; i++) {
addRange(res, (long)nums[i - ] + , (long)nums[i] - );
}
addRange(res, (long)nums[nums.length - ] + , upper);
return res;
} void addRange(List<String> res, long l, long r) {
if (l > r) {
return;
}
if (l == r) {
res.add(l + "");
return;
}
res.add(l + "->" + r);
}

2 Merge intervals

    public List<Interval> merge(List<Interval> inte)
{
List<Interval> res = new ArrayList<>();
inte.sort(Comparator.comparing(i -> i.start));
Interval last = null;
for (Interval item : inte) {
if (last == null || last.end < item.start) {
res.add(item);
last = item;
} else {
last.end = Math.max(item.end, last.end);
}
}
return res;
}

3 Insert interval

    public ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval)
{
ArrayList<Interval> res = new ArrayList<Interval>();
int id = ;
while (id < intervals.size() && intervals.get(id).start < newInterval.start) {
id++;
}
intervals.add(id, newInterval);
Interval last = null;
for (Interval item : intervals) {
if (last == null || last.end < item.start) {
res.add(item);
last = item;
} else {
last.end = Math.max(item.last, last.end);
}
}
return res;
}

Hash  字符/ 字符串统计类问题

4 First Position Unique Character

    public int firstUniqChar(String s) {
// write your code here\
int[] num = new int[];
for (char c : s.toCharArray()) {
num[c]++;
}
for (int i = ; i < s.length(); i++) {
if (num[s.charAt(i)] == ) {
return i;
}
}
return -;
}

5 Substring Anagrams

  public List<Integer> findAnagrams(String s, String p) {
List<Integer> res = new ArrayList<>();
if (s.length() < p.length()) {
return res;
}
char[] cs = s.toCharArray();
char[] ps = p.toCharArray();
int[] det = new int[];
int absSum = ;
for (int i = ; i < p.length(); i++) {
det[cs[i]]++;
det[ps[i]]--;
}
for (int i = ; i < ; i++) {
absSum += Math.abs(det[i]);
}
if (absSum == ) {
res.add();
}
for (int i = p.length(); i < s.length(); i++) {
char l = cs[i - ps.length];
char r = cs[i];
absSum = absSum - Math.abs(det[l]) - Math.abs(det[r]); det[l]--;
det[r]++; absSum = absSum + Math.abs(det[l]) + Math.abs(det[r]);
if (absSum == ) {
res.add(i - ps.length + );
}
}
return res;
}

6 Word Abbreviation Set

class VaildWordAbbr {
private Map<String, Integer> dict = new HashMap<>();
private Map<String, Integer> abbr = new HashMap<>();
public VaildWordAbbr(String[] dic) {
for (String str : dic) {
dict.put(str, dict.getOrDefault(str, ) + );
String abb = getAbbr(str);
dict.put(abb, dict.getOrDefault(abb, ) + );
}
} public boolean isUnique(String word) {
String a = getAbbr(word);
return dict.get(word) == abbr.get(a);
} String getAbbr(String word) {
if (word.length() < ) {
return word;
}
return "" + word.charAt() + (word.length() - ) + word.charAt(word.length() - );
}

7 Longest Consecutive Sequence

    public int longestConsecutive(int[] num)
{
// write you code here
if (num == null || num.length == )
{
return ;
}
HashSet<Integer> set = new HashSet<Integer>();
for (int i : num) {
set.add(i);
}
int res = ;
for (int item : num) {
if (set.contains(item)) {
set.remove(item);
int l = item - ;
int r = item + ;
while (set.contains(l)) {
set.remove(l);
l--;
}
while (set.contains(r)) {
set.remove(r);
r++;
}
res = Math.max(res, r - l - );
}
}
return res;
}

8 Load Balancer

class LoadBalance {
private List<Integer> list = new ArrayList<>();
private Map<Integer, Integer> map = new HashMap<>();
private int n = ;
private Random r = new Random();
public LoadBalance() { } public void add(int id) {
if (!map.containsKey(id)) {
list.add(id);
map.put(n, id);
n++;
}
} public void remove(int id) {
if (map.containsKey(id)) {
int lastItem = list.get(n - );
int removeIndex = map.get(id); map.put(lastItem, removeIndex);
list.set(removeIndex, lastItem);
list.remove(n - );
map.remove(id);
n--;
}
} public int pick() {
return list.get(r.nextInt(n));
} }

第三章 基础算法和数据结构高频题 I的更多相关文章

  1. 基础算法和数据结构高频题 II

    DFS的两种理解方式:1. 按照实际执行顺序模拟 (适合枚举型DFS,下节课内容)2. 按照DFS的定义宏观理解 (适合分治型DFS,本节课内容) 1 Convert BST to Greater T ...

  2. 《Java程序设计》第三章-基础语法

    20145221<Java程序设计>第三章-基础语法 总结 教材学习内容总结 类型.变量与运算符 类型 Java可区分为基本类型(Primitive Type)和类类型(Class Typ ...

  3. 《Go语言圣经》阅读笔记:第三章基础数据类型

    第三章 基础数据类型 Go语言将数据类型分为四类: 基础类型 数字 整数 浮点数 复数 字符串 布尔 复合类型 数据 结构体 引用类型 指针 切片 字典 函数 通道 接口类型 在此章节中先介绍基础类型 ...

  4. Java 学习笔记 ------第三章 基础语法

    本章学习目标: 认识类型与变量 学习运算符的基本使用 了解类型转换细节 运用基本流程语法 一.类型(基本类型) 所谓基本类型,就是在使用时,得考虑一下数据用多少内存长度存比较经济,利用程序语法告诉JV ...

  5. C语言 第三章 基础编程测试与练习

    1.屏幕上输出:This is a C program 2.输入两个整数,求两个数的和,如下所示:请输入第1个数:5请输入第2个数:3 3加5的和是8 3.完成华氏温度与摄氏温度间的转换,如下所示:请 ...

  6. php三种基础算法:冒泡,插入和快速排序法

    $array = array(2,3,5,6,9,8,1); //冒泡排序思想,前后元素比较 function sort_bulldle($array){ $num = count($array); ...

  7. PL/SQL第三章 基础查询语句

    --查询所有列 select * from tab_name|view_name; SELECT * FROM emp; SELECT * FROM (SELECT * FROM emp); --查询 ...

  8. Java第三章基础学习课后题练习

    小结:final 类型 变量名 = 数值 定义常量使用 变量的原则*** 一定要"先声明,后使用",变量使用前必须先声明.这点就没php好玩:两种键盘输入方式InputStream ...

  9. [NOIP 2014复习]第三章:动态规划——NOIP历届真题回想

    背包型动态规划 1.Wikioi 1047 邮票面值设计 题目描写叙述 Description 给定一个信封,最多仅仅同意粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定全部的邮票数量都 ...

随机推荐

  1. win7 docker安装文件及安装问题

    最近在玩爬虫,需要装docker,但是官网对于win7版本,只支持docker tool box,在官网找了半天才找到安装包,特此上传百度网盘,方便各位下载 链接:https://pan.baidu. ...

  2. 高并发 Nginx+Lua OpenResty系列(1)——环境搭建

    OpenResty是一款基于Nginx的高性能负载均衡服务器容器,简单来说是Nginx+Lua.结合了Lua语言来对Nginx进行扩展,使得在Nginx上具有web容器功能. OpenResty运行环 ...

  3. Spring Framework 组件注册 之 @Component

    Spring Framework 组件注册 之 @Component 写在前面 在spring大行其道的今天,对于spring的使用和掌握乃是不可缺少的必备技能.但是spring的整个体系尤为庞大,对 ...

  4. 高并发IM系统架构优化实践

    互联网+时代,消息量级的大幅上升,消息形式的多元化,给即时通讯云服务平台带来了非常大的挑战.高并发的IM系统背后究竟有着什么样的架构和特性? 以上内容由网易云信首席架构师内部分享材料整理而成 相关阅读 ...

  5. spring cloud 系列第8篇 —— config+bus 分布式配置中心与配置热刷新 (F版本)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.config 简介 spring cloud config 分为服务端 ...

  6. ABP开发框架前后端开发系列---(13)高级查询功能及界面的处理

    在一般的检索界面中,基于界面易用和美观方便的考虑,我们往往只提供一些常用的条件查询进行列表数据的查询,但是有时候一些业务表字段很多,一些不常见的条件可能在某些场景下也需要用到.因此我们在通用的查询条件 ...

  7. 【python3两小时快速入门】入门笔记02:类库导入

    昨晚遇到了一个问题:pip下载了request类库,以及在pyCharm的setting中下载了request类库,项目左侧也能显示出requst文件夹,但是引入报错! 这里贴一下我的解决方案,在此记 ...

  8. js深入(四)万脸懵圈的this指向

    作为一个js菜鸡的我而言,在之前讲到过那么多的js链式查找机制,比如说原型链,作用域链等等,想当然的把这个机制带入到了this指向上边,结果就是这个this指向指的我万脸懵逼(标题换字了,担心被河蟹) ...

  9. 淺談Coach思考模式

    我現在是個窮屌,沒錯.我清楚的知道這一點,但是我也知道,我能改變. 之前幹了7年的評估行業,中間換了3家公司,第一家公司待的時間最長,待了5年.2018年開始,我就在思考轉行.之前在第一家企業接觸過一 ...

  10. Drools规则引擎-memberOf操作

    场景 规则引擎技术讨论2群(715840230)有同学提出疑问,memberOf的使用过程中如果,memberOf之后的参数不是集合也不是数组,而是格式如"1,2,3,4"的字符串 ...