follow up2-20190426
406. Minimum Size Subarray
同向双指针
https://www.lintcode.com/problem/minimum-size-subarray-sum/description?_from=ladder&&fromId=4
public class Solution {
/**
* @param nums: an array of integers
* @param s: An integer
* @return: an integer representing the minimum size of subarray
*/
public int minimumSize(int[] nums, int s) {
// write your code here
if(nums==null || nums.length ==0){
return -1;
} int sum = 0;
int res = Integer.MAX_VALUE;
for(int l =0,r=0;r<nums.length;r++){
sum +=nums[r]; while(sum>=s){
res = Math.min(res,r-l+1);
sum = sum -nums[l];
l++;
}
} return res==Integer.MAX_VALUE?-1:res;
}
}
384. Longest Substring Without Repeating Characters
同向双指针
public class Solution {
/**
* @param s: a string
* @return: an integer
*/
public int lengthOfLongestSubstring(String s) {
// write your code here
if(s==null || s.length()==0){
return 0;
} Set<Character> set = new HashSet<>();
int left =0;
int right =0;
int ans = Integer.MIN_VALUE; while(left<s.length() && right<s.length()){
while(right<s.length() && !set.contains(s.charAt(right))){
set.add(s.charAt(right));
ans = Math.max(ans,right-left+1);
right++;
} set.remove(s.charAt(left));
left++;
} return ans == Integer.MIN_VALUE ? -1 : ans;
}
}
32. Minimum Window Substring
同向双指针
https://www.lintcode.com/problem/minimum-window-substring/description
public class Solution {
/**
* @param source : A string
* @param target: A string
* @return: A string denote the minimum window, return "" if there is no such a string
*/
public String minWindow(String source , String target) {
// write your code here
if(source==null || source.length()==0){
return source;
} Map<Character,Integer> map = new HashMap<>();
for(int i=0;i<target.length();i++){
char c = target.charAt(i);
if(map.containsKey(c)){
map.put(c,map.get(c)+1);
}else{
map.put(c,1);
}
} int i=0;
int j =0;
String res= "";
int min = Integer.MAX_VALUE;
int countT = target.length();
int countS = 0; //while 循环不要加 j<source.length 的条件
while(i<source.length()){
while(j<source.length() && countS<countT){
char c = source.charAt(j);
if(map.containsKey(c)){
if(map.get(c)>0) countS++;
map.put(c,map.get(c)-1);
} j++;
} if(countS>=countT){
if(j-i<min){
min = j-i;
res = source.substring(i,j);
}
} char cc = source.charAt(i);
if(map.containsKey(cc)){
if(map.get(cc)>=0) countS--;
map.put(cc,map.get(cc)+1);
}
i++;
} return res;
}
}
386. Longest Substring with At Most K Distinct Characters
同向双指针
public class Solution {
/**
* @param s: A string
* @param k: An integer
* @return: An integer
*/
public int lengthOfLongestSubstringKDistinct(String s, int k) {
// write your code here
if(s==null || s.length()==0 || k==0){
return 0;
} int l = 0;
int r = 0;
int ans = 0;
int sum = 0; int[] cnt = new int[256];
for(r=0;r<s.length();r++){
cnt[s.charAt(r)]++;
if(cnt[s.charAt(r)]==1){
sum++;
} while(sum>k){
cnt[s.charAt(l)]--;
if(cnt[s.charAt(l)]==0){
sum--;
}
l++;
} ans = Math.max(ans,r-l+1);
} return ans; }
}
465. Kth Smallest Sum In Two Sorted Arrays
heap
class Pair{
int x;
int y;
int sum;
Pair(int x, int y,int sum){
this.x = x;
this.y = y;
this.sum = sum;
}
}
public class Solution {
/**
* @param A: an integer arrays sorted in ascending order
* @param B: an integer arrays sorted in ascending order
* @param k: An integer
* @return: An integer
*/
public int kthSmallestSum(int[] A, int[] B, int k) {
// write your code here
if (A == null || A.length == 0) {
return 0;
}
if (B == null || B.length == 0) {
return 0;
}
if (k == 0) {
return 0;
} Comparator<Pair> comparator = new Comparator<Pair>(){
@Override
public int compare(Pair o1,Pair o2){
return o1.sum-o2.sum;
}
};
PriorityQueue<Pair> minHeap = new PriorityQueue<Pair>(comparator);
boolean[][] visit = new boolean[A.length][B.length];
minHeap.add(new Pair(0,0,A[0]+B[0]));
visit[0][0] = true;
int[] dx = {0,1};
int[] dy = {1,0}; for(int i=1;i<k;i++){
Pair center = minHeap.poll();;
for(int j = 0;j<2;j++){
if(center.x + dx[j]>A.length-1 || center.y + dy[j]>B.length-1 || visit[center.x+dx[j]][center.y+dy[j]]){
continue;
}
minHeap.add(new Pair(center.x+dx[j],center.y+dy[j],A[center.x+dx[j]]+B[center.y+dy[j]]));
visit[center.x+dx[j]][center.y+dy[j]] = true;
}
} return minHeap.peek().sum;
}
}
401. Kth Smallest Number in Sorted Matrix
heap
class Pair {
private int x;
private int y;
private int val; public Pair(int x, int y, int val) {
this.x = x;
this.y = y;
this.val = val;
} public int getX() {
return x;
} public void setX(int x) {
this.x = x;
} public int getY() {
return y;
} public void setY(int y) {
this.y = y;
} public int getVal() {
return val;
} public void setVal(int val) {
this.val = val;
}
} public class Solution {
/**
* @param matrix: a matrix of integers
* @param k: An integer
* @return: the kth smallest number in the matrix
*/
public int kthSmallest(int[][] matrix, int k) {
// write your code here
if (matrix == null || matrix.length == 0 || matrix.length * matrix[0].length < k) {
return -1;
}
Comparator<Pair> comparator = new Comparator<Pair>() {
@Override
public int compare(Pair o1, Pair o2) {
return o1.getVal() - o2.getVal();
}
};
int r = matrix.length;
int c = matrix[0].length;
PriorityQueue<Pair> minHeap = new PriorityQueue<>(comparator);
boolean[][] visited = new boolean[r][c]; minHeap.add(new Pair(0, 0, matrix[0][0]));
visited[0][0] = true; for (int i = 1; i <= k - 1; i++) {
Pair cur = minHeap.poll();
if (cur.getX() + 1 < r && !visited[cur.getX() + 1][cur.getY()]) {
minHeap.add(new Pair(cur.getX() + 1, cur.getY(), matrix[cur.getX() + 1][cur.getY()]));
visited[cur.getX() + 1][cur.getY()] = true;
}
if (cur.getY() + 1 < c && !visited[cur.getX()][cur.getY() + 1]) {
minHeap.add(new Pair(cur.getX(), cur.getY() + 1, matrix[cur.getX()][cur.getY() + 1]));
visited[cur.getX()][cur.getY() + 1] = true;
}
} return minHeap.peek().getVal();
}
}
543. Kth Largest in N Arrays
heap
https://www.lintcode.com/problem/kth-largest-in-n-arrays/description?_from=ladder&&fromId=4
class Node{
int value;
int fromId;
int index;
public Node(int value,int fromId,int index){
this.value = value;
this.fromId = fromId;
this.index = index;
}
}
public class Solution {
/**
* @param arrays: a list of array
* @param k: An integer
* @return: an integer, K-th largest element in N arrays
*/
public int KthInArrays(int[][] arrays, int k) {
// write your code here
if(arrays==null || arrays.length==0 ||k<=0){
return 0;
} Comparator<Node> comparator = new Comparator<Node>(){
@Override
public int compare(Node o1,Node o2){
return o2.value - o1.value;
}
}; PriorityQueue<Node> maxHeap = new PriorityQueue<Node>(comparator); int n = arrays.length; //sort and put first column into heap
for(int i =0;i<n;i++){
Arrays.sort(arrays[i]); if(arrays[i].length>0){
int fromId = i;
int index = arrays[i].length-1;
int value = arrays[i][index];
maxHeap.add(new Node(value,fromId,index));
}
} for(int i=1;i<k;i++){
Node curr = maxHeap.poll(); if(curr.index>0){
curr.index--;
maxHeap.add(new Node(arrays[curr.fromId][curr.index],curr.fromId,curr.index));
}
} return maxHeap.peek().value; }
}
follow up2-20190426的更多相关文章
- jQuery Scroll Follow
Overview Scroll Follow is a simple jQuery plugin that enables a DOM object to follow the page as the ...
- as follows ,as follow && following
在现在牛津英语上,as follow 和 as follows 用法差不多的,但后者更常用,不是说谁指一个谁指好几个.牵强附会! 为了保证正确性,你应该用as follows,单数的最好少用.意义差不 ...
- [转]Installing python 2.7 on centos 6.3. Follow this sequence exactly for centos machine only
Okay for centos 6.4 also On apu.0xdata.loc, after this install was done $ which python /usr/local/bi ...
- 编译原理LL1文法Follow集算法实现
import hjzgg.first.First; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set ...
- Follow me to learn what is Unit of Work pattern
Introduction A Unit of Work is a combination of several actions that will be grouped into a transact ...
- Follow me to learn what is repository pattern
Introduction Creating a generic repository pattern in an mvc application with entity framework is th ...
- Follow me to learn how to use mvc template
Introduction After having gone through many project: Project A Project B Project C I start to write ...
- 【转】Github轻松上手6-推荐follow的牛人和值得watch的repo
转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzk5.html Github作为一个social coding 网站,其作用远远超过了一个简单的VCS( ...
- To follow the path
look to the master, follow the master, walk with the master, see through the master, bec ...
- first集合及follow集合
前面那片文章生成的语法分析表并不是最优的,因为有些项在遇到错误输入的时候,并不是采取报错,而是执行规约,直到不能再规约的时候才报错.这是不科学的,我们需要在得到错误输入的时候立马报错,为了实现这个功能 ...
随机推荐
- idea中处理异常的快捷键
alt+Enter
- CentOS7通过 yum安装路径查询方法
CentOS7通过 yum安装路径查询方法 rpm -qa 然后执行 rpm -ql 软件名称 就可以显示软件的安装路径. 原文博客的链接地址:https://cnblogs.com/qzf/
- 马婕 2014MBA专硕考试 报刊选读 7 美国的欧洲时刻(转)
http://blog.sina.com.cn/s/blog_3e66af46010170ma.html America's European moment美国的欧洲时刻 The troubling ...
- 五)Spring + Quartz 复杂业务的两个问题:获取Spring上下文 和 自动注入服务类
配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...
- Linux 基础教程 29-tcpdump命令-1
什么是tcpdump 在Linux中输入命令man tcpdump给出的定义如下所示: tcpdump - 转储网络上的数据流 是不是感觉很懵?我们用通俗.形象.学术的表达方式来全方位描述tc ...
- Ubuntu 14.04 install emacs 24.5
1.前期准备工作 2.安装基础构件工具 3.下载emacs编译需要的依赖库 4.下载emacs24.5编译安装 5.下载并安装我的emacs配置文件 6.配置tmux和zsh 1. 前期准备工作 在阿 ...
- 为方便二层升三层新增的远程方法QuerySql6()
为了方便原来D6,D7开发的二层老程序升级为三层,新增了远程方法QuerySql6().充分地兼容原来二层SQL的写法. 1)公共方法ParamsToStr() function ParamsToSt ...
- 转载:oracle 自定义类型 type / create type
标签:type create oracle object record 一:Oracle中的类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nvarc ...
- Linux Guard Service - 守护进程再次分裂子进程
当系统区内存不能再申请新进程的时候申请会失败 在512MB内存下最多分配的子进程数 3331 [root@localhost 05]# ./test5-1 50000 expect 50000 sub ...
- SQL 从数据库中随机取n条数据
用NEWID()方法. * ,NEWID() AS random from [toblename] order by random 其中的1可以换成其他任意整数,表示取的数据条数