2024年4月23日
刷穿力扣
OFFSET
函数偏移查询的起点,LIMIT
函数限制查询的个数
将上述两个函数结合使用可以实现查询第N高的数据
注意使用 DISTINCT
函数去重数据
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M = N - 1;
RETURN (
# Write your MySQL query statement below.
SELECT IFNULL((SELECT DISTINCT salary
FROM Employee
ORDER BY salary DESC
LIMIT 1 OFFSET M), NULL)
);
END
2476. 二叉搜索树最近节点查询 - 力扣(LeetCode)
对二叉搜索树进行中序遍历得到有序数组
在有序数组上进行二分查找符合要求的值
func closestNodes(root *TreeNode, queries []int) [][]int {
d := make([]int, 0)
var dfs func(*TreeNode)
dfs = func(root *TreeNode) {
if root.Left == nil && root.Right == nil {
d = append(d, root.Val)
return
}
if root.Left != nil {
dfs(root.Left)
}
d = append(d, root.Val)
if root.Right != nil {
dfs(root.Right)
}
}
dfs(root)
ans := make([][]int, len(queries))
for i, q := range queries {
mn, ma := -1, -1
idx, ok := slices.BinarySearch(d, q)
if idx < len(d) {
ma = d[idx]
}
if !ok {
idx--
}
if idx >= 0 {
mn = d[idx]
}
ans[i] = []int{mn, ma}
}
return ans
}