刷穿力扣——4月23日

16 阅读1分钟

2024年4月23日

刷穿力扣

177. 第N高的薪水 - 力扣(LeetCode)

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
}