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

同向双指针

https://www.lintcode.com/problem/longest-substring-without-repeating-characters/description?_from=ladder&&fromId=4

 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

同向双指针

https://www.lintcode.com/problem/longest-substring-with-at-most-k-distinct-characters/description?_from=ladder&&fromId=4

 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

https://www.lintcode.com/problem/kth-smallest-sum-in-two-sorted-arrays/description?_from=ladder&&fromId=4

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

https://www.lintcode.com/problem/kth-smallest-number-in-sorted-matrix/description?_from=ladder&&fromId=4

 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的更多相关文章

  1. jQuery Scroll Follow

    Overview Scroll Follow is a simple jQuery plugin that enables a DOM object to follow the page as the ...

  2. as follows ,as follow && following

    在现在牛津英语上,as follow 和 as follows 用法差不多的,但后者更常用,不是说谁指一个谁指好几个.牵强附会! 为了保证正确性,你应该用as follows,单数的最好少用.意义差不 ...

  3. [转]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 ...

  4. 编译原理LL1文法Follow集算法实现

    import hjzgg.first.First; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set ...

  5. 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 ...

  6. Follow me to learn what is repository pattern

    Introduction Creating a generic repository pattern in an mvc application with entity framework is th ...

  7. 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 ...

  8. 【转】Github轻松上手6-推荐follow的牛人和值得watch的repo

    转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzk5.html Github作为一个social coding 网站,其作用远远超过了一个简单的VCS( ...

  9. To follow the path

    look to the master,    follow the master,    walk with the master,    see through the master,    bec ...

  10. first集合及follow集合

    前面那片文章生成的语法分析表并不是最优的,因为有些项在遇到错误输入的时候,并不是采取报错,而是执行规约,直到不能再规约的时候才报错.这是不科学的,我们需要在得到错误输入的时候立马报错,为了实现这个功能 ...

随机推荐

  1. jQuery自定义动画

    $(function(){ $(".btn1").click(function(){ $(','opacity':'toggle'}); }); $(".btn2&quo ...

  2. Linux系统下安装ncurses库

    ncurses库是一个Linux系统下的图形支持的函数库,字符终端处理库,包括面板和菜单. 今天在安装ncurses库的时候遇到了一些问题,现将遇到的问题所叙如下: 首先说明:本次安装采用的是源码包的 ...

  3. Robotframework-Appium 之常用API(一)

    上一遍隨筆(https://www.cnblogs.com/cnkemi/p/9639809.html)用Python + Robotframework + Appium對Android app小試牛 ...

  4. windows下C++操作MySQL数据库

    .安装MySQL 2.建立C++控制台程序,新建CPP源文件,如:sqlconn.cpp 3.工程项目中属性—C/C++--常规—附加包含目录中添加mysql安装目录中的MySQL\MySQL\MyS ...

  5. cordova/webapp/html5 app 用corsswalk替换内核,优化安卓webview

    Crosswalk与WebView的不同 为什么要用corsswalk?由于cordova应用在安卓上运行的时候,都是调用的手机webview,而在不同的安卓机.不同版本的系统上,webview的性能 ...

  6. delphi 拆分字符串

    最近在使用Delphi开发一种应用系统的集成开发环境.其中需要实现一个字符串拆分功能,方法基本原型应该是:procedure SplitString(src: string ; ch: Char; v ...

  7. [leetcode] 8. Maximum Depth of Binary Tree

    可能是因为我是按难度顺序刷的原因,这个其实在之前的几道题里面已经写过了.题目如下: Given a binary tree, find its maximum depth. The maximum d ...

  8. Ultimate guide to learning AngularJS in one day

    What is AngularJS? Angular is a client-side MVC/MVVM framework built in JavaScript, essential for mo ...

  9. Solr相似度算法一:DefaultSimilarity(基于TF-IDF的默认相似度算法)

    默认的similarity是基于TF/IDF 模块. 该 similarity有以下配置选项: discount_overlaps –确定是否重叠的标识(标记位置增量为0)都将被忽略在正常计算的时候. ...

  10. Orchard 介绍

    0.Introduction 下载地址 https://orchard.codeplex.com/ Orchard 是由微软公司创建,基于 ASP.NET MVC 技术的免费开源内容管理系统: 可用于 ...