【代码随想录Day30】贪心算法Part04

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

题目链接/文章讲解:代码随想录

视频讲解:贪心算法,判断重叠区间问题 | LeetCode:452.用最少数量的箭引爆气球_哔哩哔哩_bilibili

java 复制代码
class Solution {
    public int findMinArrowShots(int[][] points) {
        Arrays.sort(points, new Comparator<int[]>() {
            public int compare(int[] o1, int[] o2) {
                return Integer.compare(o1[0], o2[0]);
            }
        });
        int count = 1;
        for (int i = 1; i < points.length; i++) {
            if (points[i][0] > points[i - 1][1]) {
                count++;
            } else {
                points[i][1] = Math.min(points[i][1], points[i - 1][1]);
            }
        }
        return count;
    }
}

435. 无重叠区间

题目链接/文章讲解:代码随想录

视频讲解:贪心算法,依然是判断重叠区间 | LeetCode:435.无重叠区间_哔哩哔哩_bilibili

java 复制代码
class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        Arrays.sort(intervals, new Comparator<int[]>() {
            public int compare(int[] o1, int[] o2) {
                return Integer.compare(o1[0], o2[0]);
            }
        });
        int count = 0;
        for (int i = 1; i < intervals.length; i++) {
            if (intervals[i][0] < intervals[i - 1][1]) {
                count++;
                intervals[i][1] = Math.min(intervals[i][1], intervals[i - 1][1]);
            }
        }
        return count;
    }
}

763.划分字母区间

题目链接/文章讲解:代码随想录

视频讲解:贪心算法,寻找最远的出现位置! LeetCode:763.划分字母区间_哔哩哔哩_bilibili

java 复制代码
class Solution {
    public List<Integer> partitionLabels(String s) {
        int[] last = new int[26];
        char[] charArray = s.toCharArray();

        // 记录每个字符最后出现的位置
        for (int i = 0; i < charArray.length; i++) {
            last[charArray[i] - 'a'] = i;
        }

        List<Integer> list = new ArrayList<>();
        int start = 0;
        int end = 0;

        for (int i = 0; i < charArray.length; i++) {
            // 更新当前分区的结束位置
            end = Math.max(end, last[charArray[i] - 'a']);

            // 如果当前位置是分区的结束位置,则记录分区长度并更新 start
            if (i == end) {
                list.add(end - start + 1);
                start = end + 1;
            }
        }

        return list;
    }
}
相关推荐
一匹电信狗1 分钟前
【C++】手搓一个STL风格的vector容器
c语言·数据结构·c++·算法·leetcode·stl·visual studio
生信探索6 分钟前
SeuratExtend 可视化教程(1):单细胞分析的高颜值绘图指南
算法
BUG创建者6 分钟前
openlayer根据不同的状态显示不同的图层颜色
android·java·javascript
小小小白的编程日记13 分钟前
C语言中的数据结构--栈和队列(2)
c语言·数据结构
李永奉21 分钟前
C语言-数组:数组(定义、初始化、元素的访问、遍历)内存和内存地址、数组的查找算法和排序算法;
c语言·算法·排序算法
羊锦磊28 分钟前
[java 常用类API] 新手小白的编程字典
java
都叫我大帅哥30 分钟前
TOGAF技术架构阶段全解析:从理论到Java实战,避坑指南附赠!
java
星辰大海的精灵32 分钟前
深入解析 CopyOnWriteArrayList
java·后端·算法
都叫我大帅哥34 分钟前
Java ScopedValue:线程安全的"数据气泡"指南
java
Code季风35 分钟前
深入 Spring IoC 容器:六大关键应用场景助力项目开发
java·spring