1. Minimum Window Substring

Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).

Example:

```Input: S = "ADOBECODEBANC", T = "ABC"
Output: "BANC"
```

Note:

• If there is no such window in S that covers all characters in T, return the empty string `""`.
• If there is such window, you are guaranteed that there will always be only one unique minimum window in S.

1. create a hashmap for each character in t and count their frequency in t as the value of hashmap.
2. Find the first window in S that contains T.
3. Checking from the leftmost index of the window and to see if it belongs to t. The reason we do so is that we want to shrink the size of the window.
3-1) If the character at leftmost index does not belong to t, we can directly remove this leftmost value and update our window(its minLeft and minLen value)
3-2) If the character indeed exists in t, we still remove it, but in the next step, we will increase the right pointer and expect the removed character. If find so, repeat step 3.

```class Solution {
public String minWindow(String s, String t) {
HashMap<Character, Integer> map = new HashMap<Character, Integer>();;
for(char c : t.toCharArray()){
if(map.containsKey(c)){
map.put(c, map.get(c)+1);
}else{
map.put(c, 1);
}
}
int counter=t.length(), begin=0, end=0, head=0, d=Integer.MAX_VALUE;
while(end<s.length()){　// 先找左边第一个包含T的substring
char c_left=s.charAt(end);
if(map.containsKey(c_left)){
map.put(c_left, map.get(c_left)-1);
if(map.get(c_left)>=0) counter--;
}
end++;
while(counter==0){ // 如果找到，则从substring的左边考虑
if(end-begin<d){
d=end-begin;
}
char c_right=s.charAt(begin);
if(map.containsKey(c_right)){
map.put(c_right, map.get(c_right)+1);
if(map.get(c_right)>0)  counter++;
}
begin++;
}
}

}
} ```

2. Largest Rectangle in Histogram

Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.

Above is a histogram where width of each bar is 1, given height = `[2,1,5,6,2,3]`.

The largest rectangle is shown in the shaded area, which has area = `10` unit.

Example:

```Input: [2,1,5,6,2,3]
Output: 10```

For every bar ‘x’, we calculate the area with ‘x’ as the smallest bar in the rectangle. If we calculate such area for every bar ‘x’ and find the maximum of all areas, our task is done

```class Solution {
public int largestRectangleArea(int[] heights) {
Stack<Integer> st=new Stack();
int left=0;
int maxArea=0;
for(int i=0;i<=heights.length;i++){
int h= (i==heights.length? 0:heights[i]);
if(st.isEmpty() || h>=heights[st.peek()]){
st.push(i);
}else{
int hi=heights[st.pop()];
left=(st.isEmpty()? -1:st.peek());
maxArea=Math.max(maxArea, (i-left-1)*hi);
i--;
}
}
return maxArea;
}
}```

## LeetCode解题报告—— Minimum Window Substring && Largest Rectangle in Histogram的更多相关文章

1. 【LeetCode】76. Minimum Window Substring

Minimum Window Substring Given a string S and a string T, find the minimum window in S which will co ...

2. LeetCode之“动态规划”：Maximal Square &amp;&amp; Largest Rectangle in Histogram &amp;&amp; Maximal Rectangle

1. Maximal Square 题目链接 题目要求: Given a 2D binary matrix filled with 0's and 1's, find the largest squa ...

3. LeetCode 84. 柱状图中最大的矩形(Largest Rectangle in Histogram)

84. 柱状图中最大的矩形 84. Largest Rectangle in Histogram

4. 【一天一道LeetCode】#76. Minimum Window Substring

一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

5. 【LeetCode练习题】Minimum Window Substring

找出包含子串的最小窗口 Given a string S and a string T, find the minimum window in S which will contain all the ...

6. LeetCode第[84]题(Java)：Largest Rectangle in Histogram（最大的矩形柱状图）

题目:最大的矩形柱状图 难度:hard 题目内容: Given n non-negative integers representing the histogram's bar height wher ...

7. LeetCode: Largest Rectangle in Histogram 解题报告

Largest Rectangle in Histogram Given n non-negative integers representing the histogram's bar height ...

8. Minimum Window Substring @LeetCode

不好做的一道题,发现String Algorithm可以出很多很难的题,特别是多指针,DP,数学推导的题.参考了许多资料: http://leetcode.com/2010/11/finding-mi ...

9. LeetCode解题报告—— Maximal Rectangle

Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1's and ...

## 随机推荐

1. Android应用开发基础之四：网络编程（一）

网络图片查看器 确定图片的网址 发送http请求 URL url = new URL(address); //获取连接对象,并没有建立连接 HttpURLConnection conn = (Http ...

2. git deployment strategy

http://nicolasgallagher.com/simple-git-deployment-strategy-for-static-sites/ You can still ignore a ...

3. Cisco asa 5510升级IOS和ASDM

asa asa(config)# dir                                                                                 ...

4. 【Java】Java 序列化的高级认识

如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件.那你最好再阅读该篇文章,文章对序列化进行了更深一步的讨论,用实际的例子代码讲述了序列化的高级认识,包括父类序列化的问题.静 ...

5. [BZOJ]1017 魔兽地图DotR(JSOI2008)

BZOJ第一页做着做着就能碰到毒题,做到BZOJ1082小C就忍了,没想到下一题就是这种东西.这种题目不拖出来枭首示众怎么对得起小C流逝的青春啊. Description DotR (Defense ...

6. demo_1

我练习的demo是基于SSM+MySQL+Eclipse+Tomcat8+Maven3实现的: 创建项目 ## 创建Maven Project: Artifact Id: cn.com.demo    ...

7. javaScript:压缩图片并上传

html代码: <input id="file" type="file" name="filesName"> js代码: var ...

8. node(基础)_node.js中的http服务以及模板引擎的渲染

一.前言 本节的内容主要涉及: 1.node.js中http服务 2.node.js中fs服务 3.node.js中模板引擎的渲染 4.利用上面几点模拟apache服务器 二.知识 1.node.js ...

9. 查看和解除Linux系统对用户使用资源的限制

查看当前系统资源限制 ulimit -a   设置用户的最大进程数(重启后失效) ulimit -u 1024   设置用户可以打开的最大文件句柄数(重启后失效) ulimit -n 65530   ...

10. mysql 开发进阶篇系列 25 数据库RPM安装目录介绍

一.概述 mysql可以在多个平台上运行,在windows平台上安装有noinstall包和图形化包二种方式.在linux/unix平台上有RPM包安装,二进制包(Binary Package)安装, ...