区间类问题

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. mogodbshell中数组对象查询修改方法

    在mongodb中,存在如下数据 { "_id" : ObjectId("59af55078a8fc5e51ff425de"), "title&quo ...

  2. 07 jQuery的位置信息

    一.宽度和高度 获取宽度 .width() 描述:为匹配的元素集合中获取第一个元素的当前计算宽度值.这个方法不接受任何参数..css(width) 和 .width()之间的区别是后者返回一个没有单位 ...

  3. happy machine learning(Second One)

    发现机器学习就根本停不下来 今天来用RNN算法来爽爽僵尸网络宿主预测 首先我们下载好数据,然后打开我们可爱的熊猫 import numpy as np import pandas as pd impo ...

  4. List中的set方法和add方法

    public class TestList {public static void main(String[] args){   List l1 = new LinkedList();   for(i ...

  5. 详解Linux运维工程师必备技能

    张戈大神是腾讯的一名运维,张戈博客也是我接触到第一个 Linux 运维师的博客,最近也在接触 Linux,说到工具,在行外可以说是技能,在行内一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几 ...

  6. 一个简易的css reset

    /*css reset*/ /*清除内外边距*/ body, h1, h2, h3, h4, h5, h6, p, hr, /*结构元素*/ ul, ol, li, dl, dt, dd, /*列表元 ...

  7. [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

    这个问题是由于data的目录下没有安装数据库表 解决方法: vi /etc/my.cnf 修改为正确的datadir=“xxxxx”即可 然后service mysqld start service ...

  8. 每日一问:谈谈 SharedPreferences 的 apply() 和 commit()

    SharedPreferences 应该是任何一名 Android 初学者都知道的存储类了,它轻量,适合用于保存软件配置等参数.以键值对的 XML 文件形式存储在本地,程序卸载后也会一并清除,不会残留 ...

  9. navicat远程连接mysql10060

    navicat连接mysql时,出现2003-Can't connect to MySql server on '47.106.228.160'(10060"Unknow error&quo ...

  10. 设计模式-观察者模式(Observer)

    观察者模式是行为模式的一种,它的作用是当一个对象的状态发生变化时,能够自动通知关联对象,自动刷新对象状态. 观察者模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步. ...