30天刷题挑战(二十六)

题目来源: LeetCode 75 面试经典 150 题

435. 无重叠区间

思路

贪心算法,先按区间右端点从小到大排序,每次寻找右端点在首个区间右端点左侧的新区间,将首个区间替换成该区间。当无法替换时,首个区间就是所有可以选择的区间中右端点最小的那个区间

代码

js 复制代码
/**
 * @param {number[][]} intervals
 * @return {number}
 */
var eraseOverlapIntervals = function(intervals) {
  if (!intervals.length) {
    return 0
  }

  intervals.sort((a, b) => a[1] - b[1])

  let right = intervals[0][1]
  let res = 1

  for (let i = 1; i < intervals.length; i++) {
    if (intervals[i][0] >= right) {
      res++
      right = intervals[i][1]
    }
  }

  return intervals.length - res
};

452. 用最少数量的箭引爆气球

思路

按右端点升序排序,以第一个区间的右端点为起点,每次寻找下一个区间的左端小于当前端点的区间,不重合弓箭数加一,最后返回弓箭数。

代码

js 复制代码
/**
 * @param {number[][]} points
 * @return {number}
 */
var findMinArrowShots = function(points) {
  points.sort((a, b) => a[1] - b[1])

  let i = 0
  let result = 0

  while(i <points.length) {
    const right = points[i][1]
    i++

    while(i < points.length && points[i][0] <= right) {
      i++
    }
    result++
  }


  return result
};

274. H 指数

思路

排序法,将数组从大到小排序,每当找到大于当前 h 指数的论文,h 加一,最后返回 h 值

代码

js 复制代码
/**
 * @param {number[]} citations
 * @return {number}
 */
var hIndex = function(citations) {
  citations.sort((a, b) => a - b)
  let h = 0
  let i = citations.length - 1

  while (i >= 0 && citations[i] > h) {
    h++
    i--
  }
   
  return h
};

本文完,感谢阅读。

相关推荐
杨连江3 分钟前
原子级平面限域协同晶核诱导定向生长单层鳞片石墨的研究
算法
MATLAB代码顾问9 分钟前
混合粒子群-模拟退火算法(HPSO-SA)求解作业车间调度问题——附MATLAB代码
算法·matlab·模拟退火算法
傻瓜搬砖人11 分钟前
SpringMVC的请求
java·前端·javascript·spring
Felven13 分钟前
C. Prefix Min and Suffix Max
算法
加农炮手Jinx14 分钟前
LeetCode 26. Remove Duplicates from Sorted Array 题解
算法·leetcode·力扣
加农炮手Jinx14 分钟前
LeetCode 88. Merge Sorted Array 题解
算法·leetcode·力扣
格林威14 分钟前
线阵工业相机:如何计算线阵相机的行频(Line Rate)?公式+实例
开发语言·人工智能·数码相机·算法·计算机视觉·工业相机·线阵相机
yueyue54317 分钟前
透过现象看本质:以fast_lio架构的整套算法的局部避障改为TEB算法为例深度探讨——如何成为一个合格的算法架构师?
算法·架构
梨花爱跨境17 分钟前
红人视频×A10算法:亚马逊转化率与流量闭环实战
算法
一叶飘零_sweeeet17 分钟前
2026 年 Java 面试必问:Spring AI 核心原理,90% 人答不全
java·面试·spring ai