力扣打卡day07——最大子数组和、合并区间

53. 最大子数组和 - 力扣(LeetCode)

复制代码
class Solution {
    public int maxSubArray(int[] nums) {
        //这个题就是直接通过for进行判断,每次相加找出最大值
        int n=nums.length;
        int count=0;
        int result=Integer.MIN_VALUE;
    
        for(int i=0;i<n;i++){
            count+=nums[i];
            result=Math.max(result,count);
            //相加的时候小于0就进行重置
            if(count<0){
                count=0;
            }
        }
        return result;
    }
}

56. 合并区间 - 力扣(LeetCode)

思路:

先按首位置进行排序;

接下来,如何判断两个区间是否重叠呢?比如 a = [1,4],b = [2,3]

当 a[1] >= b[0] 说明两个区间有重叠.

但是如何把这个区间找出来呢?

左边位置一定是确定,就是 a[0],而右边位置是 max(a[1], b[1])

所以,我们就能找出整个区间为:[1,4]

复制代码
class Solution {
    public int[][] merge(int[][] intervals) {
         List<int []> list=new ArrayList<>();

         //为空判断
         if(intervals ==null || intervals.length==0 ){
            return new int[0][];
         }
         if(intervals.length==1){
            return intervals;
         }
         //进行排序
         Arrays.sort(intervals,(a,b)-> a[0]-b[0]);
         int left,right;
         int i=0;
         //循环取数
         while(i<intervals.length){
            left=intervals[i][0];
            right=intervals[i][1];
            //判断两个区间是否重叠,如有就进行
            while(i<intervals.length-1 && right>=intervals[i+1][0]){
                right=Math.max(right,intervals[i+1][1]);
                i++;
            }
            list.add(new int[]{left,right});
           i++;
         }
         return list.toArray(new int[0][]);
    }
}
相关推荐
想吃火锅10051 小时前
【leetcode】105. 从前序与中序遍历序列构造二叉树
算法·leetcode·职场和发展
2401_831824962 小时前
嵌入式C++驱动开发
开发语言·c++·算法
靠沿2 小时前
【优选算法】专题十八——BFS解决拓扑排序问题
算法·宽度优先
cui_ruicheng2 小时前
C++数据结构进阶:哈希表实现
数据结构·c++·算法·哈希算法·散列表
li星野2 小时前
[特殊字符] 模拟试卷一:C++核心与系统基础(90分钟)答案版
开发语言·c++·算法
二进制星轨2 小时前
leecode-283-移动零-算法题解
算法
老鼠只爱大米2 小时前
LeetCode经典算法面试题 #215:数组中的第K个最大元素(快速选择、堆排序、计数排序等多种实现方案详解)
算法·leetcode·堆排序·快速选择·topk·数组中的第k个最大元素
2301_816651222 小时前
C++中的享元模式变体
开发语言·c++·算法
逆境不可逃2 小时前
LeetCode 热题 100 之 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode