首页 > 编程语言 >代码随想录算法训练营 | 452. 用最少数量的箭引爆气球,435. 无重叠区间,763.划分字母区间

代码随想录算法训练营 | 452. 用最少数量的箭引爆气球,435. 无重叠区间,763.划分字母区间

时间:2024-10-05 21:00:56浏览次数:7  
标签:int 763 随想录 ++ intervals res 区间 points

452. 用最少数量的箭引爆气球
题目链接:452. 用最少数量的箭引爆气球
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰452. 用最少数量的箭引爆气球
日期:2024-10-05

想法:对气球起点排序,没有重叠的箭头+1,有重叠得话将右边置为最小的右边。
Java代码如下:

class Solution {
    public int findMinArrowShots(int[][] points) {
        Arrays.sort(points, (a, b) -> Integer.compare(a[0], b[0]));
        int res = 1;
        for(int i = 1; i < points.length; i++) {
            if(points[i][0] > points[i - 1][1]) {
                res++;
            }else {
                points[i][1] = Math.min(points[i - 1][1], points[i][1]);
            }
        }
        return res;
    }
}

435. 无重叠区间
题目链接:435. 无重叠区间
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰无重叠区间
日期:2024-10-05

想法:与气球很相似,选右边最短的就相当于删除了一次。
Java代码如下:

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
        int res = 0;
        for(int i = 1; i < intervals.length; i++) {
            if(intervals[i][0] < intervals[i - 1][1]) {
                intervals[i][1] = Math.min(intervals[i - 1][1], intervals[i][1]);
                res++;
            }
        }
        return res;
    }
}

763.划分字母区间
题目链接:763.划分字母区间
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰划分字母区间
日期:2024-10-05

Java代码如下:

class Solution {
    public List<Integer> partitionLabels(String S) {
        List<Integer> list = new LinkedList<>();
        int[] hash = new int[26];
        char[] chars = S.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            hash[chars[i] - 'a'] = i;
        }
        int left = 0;
        int right = 0;
        for (int i = 0; i < chars.length; i++) {
            right = Math.max(right, hash[chars[i] - 'a']);
            if (i == right) {
                list.add(i - left + 1);
                left = i + 1;
            }
        }
        return list;
    }
}

标签:int,763,随想录,++,intervals,res,区间,points
From: https://www.cnblogs.com/wowoioo/p/18448465

相关文章

  • 代码随想录算法训练营day3|● 203.移除链表元素 ● 707.设计链表 ● 206.反转链表
    学习资料:https://programmercarl.com/链表理论基础.html#链表的类型可设置虚拟头结点dummy_head链表最后指向Null一个节点包含值和索引学习记录:203.移除链表元素(基本ListNode(),cur.next,cur.next.val)点击查看代码#Definitionforsingly-linkedlist.#classListNod......
  • 代码随想录算法训练营 | 134. 加油站,135. 分发糖果,860.柠檬水找零,406.根据身高重建队
    134.加油站题目链接:134.加油站文档讲解︰代码随想录(programmercarl.com)视频讲解︰加油站日期:2024-10-04想法:1.总汽油大于等于消耗一定能跑完,2.当前剩余汽油小于0了,只能从下一站开始重新计算Java代码如下:classSolution{publicintcanCompleteCircuit(int[]gas,int......
  • 数轴上定长区间与给定区间同时相交的最大数量
    模型在[1,n]中给定k个长度不等区间[l,r],求[1,n]中长度为d的区间与给定区间同时相交的最大数量代码intsolve(intn,intd,intk,std::vector<PII>&a){std::sort(a.begin(),a.end());std::priority_queue<int,std::vector<int>,std::greater<int>>f;......
  • 代码随想录算法训练营Day2|209.长度最小的子数组 59.螺旋矩阵
    学习资料:https://programmercarl.com/数组总结篇.html#数组的经典题目移动窗格,首尾指针根据条件变化模拟行为,循环不变量(左闭右闭或左闭右开)整个过程保持一致学习记录:209.长度最小的子数组(用while使得尾指针遍历全部;用while实现,当[首:尾]之和>目标值,才移动首指针;为了求最小长度......
  • 代码随想录算法训练营 | 122.买卖股票的最佳时机II,55. 跳跃游戏,45.跳跃游戏II,1005.K次
    122.买卖股票的最佳时机II题目链接:122.买卖股票的最佳时机II文档讲解︰代码随想录(programmercarl.com)视频讲解︰买卖股票的最佳时机II日期:2024-10-03想法:本来还在想什么时候买股票,结果只需要考虑每天的正收益累加就是最大的收益了。Java代码如下:classSolution{public......
  • 代码随想录算法训练营day7|704.二分查找、27.移除元素、977.有序数组的平方
    学习资料:https://programmercarl.com/数组理论基础.html理解:双指针可以同时获取一个数组的两个位置的值二分查找:根据区间范围(左闭右闭、左闭右开)来判断左右指针比较方式刷题记录:704.二分查找(左闭右闭则<=,左右指针,middle=left+(right-left)//2,因为考虑了等号情况所以下一步l......
  • 代码随想录算法训练营 | 贪心算法:455.分发饼干,376. 摆动序列,53. 最大子序和
    455.分发饼干题目链接:455.分发饼干文档讲解︰代码随想录(programmercarl.com)视频讲解︰分发饼干日期:2024-10-02想法:大饼干喂大孩子Java代码如下:classSolution{publicintfindContentChildren(int[]g,int[]s){Arrays.sort(g);Arrays.sort(s);......
  • 代码随想录算法训练营 | 491.递增子序列,46.全排列,47.全排列 II
    491.递增子序列题目链接:491.递增子序列文档讲解︰代码随想录(programmercarl.com)视频讲解︰491.递增子序列日期:2024-10-02想法:根据题目nums[i]的范围在-100到100,可以用数组做记录是否同一层使用过Java代码如下:classSolution{List<Integer>path=newArrayList<>();......
  • 代码随想录算法-回溯4
    题目1491.非递减子序列给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例1:输入:nums=[4,6,7,7]输出:[[4,6],[4......
  • 区间 题解
    题意简述求长度为\(n\)的序列\(a\)的最长连续子序列\([l,r]\),满足\(\existsi\in[l,r],\gcd(a_l,\ldots,a_r)=a_i\)。\(1\leqn\leq4\times10^6\),\(1\leqa_i\leq10^{18}\)。题目分析根据\(\gcd(a,b)=a\)等价于\(b\bmoda=0\),这个区间的限......