每日两题 / 53. 最大子数组和 && 56. 合并区间(LeetCode热题100)

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

经典dp题,dp[i]表示以nums[i]为结尾的所有子数组中,最大的和

将i从左到右遍历,考虑dp[i]如何维护?

以nums[i]结尾的子数组只有两种情况,子数组只有nums[i]一个元素、子数组不止nums[i]一个元素

所以dp[i] = max(dp[i - 1] + nums[i], nums[i])

在两种情况中,取最大值即可

cpp 复制代码
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        vector<int> dp(nums.size());
        dp[0] = nums[0];
        for (int i = 1; i < nums.size(); ++ i)
            dp[i] = max(nums[i], dp[i - 1] + nums[i]);
        int ans = dp[0];
        for (int i = 1; i < dp.size(); ++ i)
            ans = max(ans, dp[i]);
        return ans;
    }
};

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

按左端点排序,遍历区间,记录一开始的作曲兼并维护最大的右边界

若遇到右边界小于左边界的情况,说明出现不重叠区间,此时维护答案

cpp 复制代码
class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        sort(intervals.begin(), intervals.end(), 
            [&](const vector<int> &left, const vector<int> &right){
                if (left[0] < right[0]) return true;
                else if (left[0] > right[0]) return false;
                else return left[1] < right[1];
        });
        vector<vector<int>> ans;
        int l = intervals[0][0], r = intervals[0][1];
        for (int i = 1; i < intervals.size(); ++ i)
        {
            if (r < intervals[i][0])
            {
                ans.push_back({l, r});
                l = intervals[i][0], r = intervals[i][1];
            }
            else r = max(r, intervals[i][1]);
        }
        ans.push_back({l, r});
        return ans;
    }
};
相关推荐
水木流年追梦3 分钟前
CodeTop Top 300 热门题目8-字符串解码
linux·运维·服务器·前端·算法·leetcode
lcj25114 分钟前
精选5大高频链表与数组算法详解:从旋转数组到链表公共节点,LeetCode实战代码+图解全解析
算法·leetcode·链表
xin_nai5 分钟前
LeetCode热题100(Java)(4)子串
java·算法·leetcode
如君愿10 分钟前
考研复习 Day 24 | 习题--计算机网络第二章(物理层)、数据结构(栈与队列)
数据结构·计算机网络·考研·课后习题·记录考研
一只数据集10 分钟前
机器学习多领域综合数据集分析-包含基因表达时间序列分类回归数据-适用于算法训练模型评估科研应用
人工智能·算法·数据分析
c++之路18 分钟前
C++ 命名空间(Namespace)
开发语言·c++·算法
jiang_bluetooth1 小时前
奈奎斯特第一准则理解和WIFI OFDM的关联
算法
DuHz8 小时前
论文精读:大语言模型 (Large Language Models, LLM) —— 一项调查
论文阅读·人工智能·深度学习·算法·机器学习·计算机视觉·语言模型
加农炮手Jinx9 小时前
LeetCode 72. Edit Distance 题解
算法·leetcode·力扣
借雨醉东风9 小时前
程序分享--常见算法/编程面试题:旋转矩阵
c++·线性代数·算法·面试·职场和发展·矩阵