https://leetcode.com/problems/maximal-square/
var maximalSquare = function(matrix) {
if(!matrix || !matrix.length) return 0;
var mLength = matrix.length;
var nLength = matrix[0].length;
var i, j, r = 0;
for(i = 0; i < mLength; i++){
for(j = 0; j < nLength; j++){
if(matrix[i][j] == '0'){
continue;
}else if(i === 0 || j === 0){
r = Math.max(r, matrix[i][j]);
continue;
}
matrix[i][j] = Math.min(matrix[i-1][j-1], matrix[i-1][j], matrix[i][j-1]) + 1;
r = Math.max(r, matrix[i][j]);
}
}
return r * r;
};
https://leetcode.com/problems/search-a-2d-matrix-ii/
var searchMatrix = function(matrix, target) {
var m = 0;
var n = matrix[0].length-1;
while(m<=matrix.length-1 && n>=0){
if(matrix[m][n] == target){
return true;
}else if(matrix[m][n] > target){
n--;
}else{
m++;
}
}
return false;
};
---------------------------------------------------------------------------------------
var searchMatrix = function(matrix, target) {
var m, n;
var mLength = matrix.length, nLength = matrix[0].length;
if(mLength === 0 && nLength === 0 ) return false;
for(n = nLength - 1;n >= 0; n--){
for(m = mLength - 1;m >= 0; m--){
if(target === matrix[m][n]) return true;
}
}
return false;
};
https://leetcode.com/problems/rank-scores/
SELECT S.Score, S.rank
FROM
( SELECT @nowRank := 0, @nowScore := -1) r,
( SELECT
S.Score,
@nowRank := IF(@nowScore = S.Score, @nowRank, @nowRank + 1) AS rank,
@nowScore := S.Score
FROM
(
SELECT
S.Score
FROM
Scores S
ORDER BY S.Score DESC
) S
) S
https://leetcode.com/problems/second-highest-salary/
SELECT MAX(E.Salary)
FROM
Employee E
INNER JOIN ( SELECT MAX(Salary) Salary FROM Employee ) M ON M.Salary > E.Salary
---------------------------------------------------------------------------------------
SELECT MAX(t.Salary)
FROM
(
SELECT DISTINCT E.Salary
FROM Employee E
ORDER BY E.Salary DESC
LIMIT 1,1
) t
https://leetcode.com/problems/edit-distance/
var minDistance = function(word1, word2) {
var word1Length = word1.length;
var word2Length = word2.length;
if(word1Length < 1 || word2Length < 1) return Math.max(word1Length, word2Length);
var distance = [], i, j, iWord, d;
for(i = 0; i <= word1Length; i++){
if(!distance[i]) distance[i] = [];
distance[i][0] = i;
}
for(j = 0; j <= word2Length; j++) distance[0][j] = j;
for(i = 0; i < word1Length; i++){
iWord = word1[i];
for(j = 0; j < word2Length; j++){
d = distance[i][j];
if(iWord == word2[j]){
distance[i+1][j+1] = d;
}else{
distance[i+1][j+1] = Math.min( Math.min(distance[i+1][j]+1, distance[i][j+1]+1), d+1);
}
}
}
return distance[word1Length][word2Length];
};
https://leetcode.com/problems/department-top-three-salaries/
SELECT E.Department, E.Employee, E.Salary
FROM
( SELECT @num := 0, @type := '', @money=0) r,
( SELECT
E.Department,
E.Employee,
E.Salary,
@num := IF(@type = E.DepartmentId, IF(@money=E.Salary, @num, @num+ 1), 1) AS row_number,
@type := E.DepartmentId,
@money := E.Salary
FROM
(
SELECT
E.Name AS Employee,
E.Salary,
E.DepartmentId,
D.Name AS Department
FROM
Employee E
INNER JOIN Department D ON D.Id=E.DepartmentId
ORDER BY E.DepartmentId, E.salary DESC
) E
) E
WHERE E.row_number <= 3