30天刷题挑战(三十)

题目来源: 面试经典 150 题

230. 二叉搜索树中第K小的元素

思路

中序遍历,

代码

js 复制代码
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} k
 * @return {number}
 */
var kthSmallest = function(root, k) {
  let res

  const inOrder = (node) => {
    if (node !== null && k > 0) {
      inOrder(node.left)
      k--
      if (k === 0) {
        res = node.val
      }
      inOrder(node.right)
    }
  }

 inOrder(root)

 return res
};

219. 存在重复元素 II

思路

使用一个 Set 对象存储数字,遍历数组,向 Set 中存入数字,当 Set 的大小大于 k 时移出最前面的数字,当存在相同的数字时,说明在 k 距离内存在重复数字。

代码

js 复制代码
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {boolean}
 */
var containsNearbyDuplicate = function(nums, k) {
  const set = new Set()

  for (let i = 0; i < nums.length; i++) {
    if (set.has(nums[i])) {
      return true
    }
    set.add(nums[i])
    if (set.size > k) {
      set.delete(nums[i - k])
    }
  }

  return false
};

228. 汇总区间

思路

根据题意模拟,向右遍历数组,每次遇到相邻数字差值大于 1 时,就是一个区间,放入结果中。

代码

js 复制代码
/**
 * @param {number[]} nums
 * @return {string[]}
 */
var summaryRanges = function(nums) {
  let res = []
  let start = 0

  while (start < nums.length) {
    let low = start
    start += 1

    while (start < nums.length && nums[start] === nums[start - 1] + 1) {
      start += 1
    }

    const high = start - 1
    const tmp = ["" + nums[low]]
    
    if (low < high) {
      tmp.push("->")
      tmp.push("" + nums[high])
    }
    res.push(tmp.join(""))
  }

  return res
};

本文完,感谢阅读。

相关推荐
2601_957780845 分钟前
Claude Code 2026年最新部署指南:从环境搭建到技能扩展
前端·人工智能·ai编程·claude
zhangfeng113323 分钟前
workbuddy 专家 “前端开发师” 结合nvidia-mistral-small-4-119b-2603 项目计划-前端界面开发.md
前端·人工智能·免费
洛水水40 分钟前
【力扣100题】32.将有序数组转换为二叉搜索树
数据结构·算法·leetcode
如竟没有火炬1 小时前
用队列实现栈
开发语言·数据结构·python·算法·leetcode·深度优先
折哥的程序人生 · 物流技术专研1 小时前
《Java 100 天进阶之路》第17篇:Java常用包装类与自动装箱拆箱深入
java·开发语言·后端·面试
云栖梦泽在2 小时前
AI安全入门:AI模型泄露的风险与防护措施
人工智能·算法·动态规划
水木流年追梦2 小时前
大模型入门-应用篇3-Agent智能体
开发语言·python·算法·leetcode·正则表达式
洛水水2 小时前
【力扣100题】31.二叉树的层序遍历
算法·leetcode·职场和发展
IT_陈寒2 小时前
为什么Java的Stream并行处理反而变慢了?
前端·人工智能·后端
君义_noip2 小时前
CSP-S 2025 入门级 第一轮(初赛) 完善程序(1)
c++·算法·信息学奥赛·初赛·csp 第一轮