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
};

本文完,感谢阅读。

相关推荐
赛博切图仔1 分钟前
前端性能内卷终点?Signals 正在重塑我们的开发习惯
前端·javascript·vue.js
小江的记录本4 分钟前
【RAG】RAG检索增强生成(核心架构、全流程、RAG优化方案、常见问题与解决方案)
java·前端·人工智能·后端·python·机器学习·架构
zjeweler4 分钟前
“网安+护网”终极300多问题面试笔记-1共3-内网&域相关
笔记·web安全·网络安全·面试·职场和发展·护网面试
历程里程碑5 分钟前
二叉树---二叉树的最大深度
大数据·数据结构·算法·elasticsearch·搜索引擎·全文检索·深度优先
自我意识的多元宇宙7 分钟前
树与二叉树--树的基本概念
数据结构·算法
程序员buddha7 分钟前
SCSS从0到1精通教程
前端·css·scss
吃着火锅x唱着歌8 分钟前
LeetCode 678.有效的括号字符串
算法·leetcode·职场和发展
ZC跨境爬虫14 分钟前
海南大学交友平台登录页开发实战day6(覆写接口+Flask 本地链接正常访问)
前端·后端·python·flask·html
Highcharts.js24 分钟前
抉择之巅:从2029年回望2026年——企业可视化“战略分水岭”?
前端·javascript·信息可视化·编辑器·echarts·highcharts
沙振宇25 分钟前
【Web】使用Vue3+PlayCanvas开发3D游戏(十)让人物动起来
前端·游戏·3d·人物·