代码随想录算法训练营第三十一天 | 455.分发饼干 376.摆动序列 53.最大子数组和

455.分发饼干

题目链接 文章讲解 视频讲解

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        sort(g.begin(), g.end());
        sort(s.begin(), s.end());
        int index = 0;
        // 从最小的饼干开始遍历
        for(int i = 0; i < s.size(); ++i) {
            // 尽量选取胃口小的小朋友,如果满足那么进行到下一个小朋友(++index)
            if(index < g.size() && g[index] <= s[i]) {
                ++index;
            }
            // 如果不满,选取下一块更大的饼干
        }
        return index;
    }
};

376.摆动序列

题目链接 文章讲解 视频讲解

思路:
如果nums.size() == 1; 则返回1
找到第一组差值不为0的元素,如果全部差值均为0,返回1
否则初始化length和maxLength为2(因为已经有一组差值不为0的元素,所以初始化为2)
如果当前差值和前一个差值相乘为负数则length++更新maxLength
否则跳过,继续循环;

class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {
        if(nums.size() == 1) return 1;

        // 记录前一个差值
        int pre;
        // 记录第一个插值不为0的起始位置
        int startIndex = 1;
        // 从第一个插值不为零的地方开始
        for(; startIndex < nums.size(); ++startIndex) {
            if(pre = nums[startIndex] - nums[startIndex - 1]) break;
        }
        // 如果插值全部为零,则返回1
        if(startIndex == nums.size()) return 1;


        int length = 2;
        int maxLength = 2;
        for(int i = startIndex; i < nums.size(); ++i) {
            int temp = nums[i] - nums[i - 1];
            // 前一个差值和后一个差值相乘为负数则说明是摆动序列
            if(temp * pre < 0) {
                length++;
                if(length > maxLength) maxLength = length;
                pre = temp;
            } 
            // 如果不是摆动的则直接跳过     
        }
        return maxLength;
    }
};

53.最大子数组和

题目链接 文章讲解 视频讲解

思路:如果连续和为负数的话,直接从下一个数开始,因为此时 连续和 + 当前值 < 当前值;所以将连续和置为当前值,继续累加

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int maxSum = INT_MIN;
        // 记录连续和
        int sum = 0;
        for(int i = 0; i < nums.size(); ++i) {
            // 如果连续和小于0则,重新开始记录
            if(sum < 0) sum = 0;
            sum += nums[i];
            maxSum = max(sum, maxSum);
        }
        return maxSum;
    }
};
posted @ 2024-06-07 22:11  深蓝von  阅读(2)  评论(0编辑  收藏  举报