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

今日任务

455.分发饼干

  • 题目链接: https://leetcode.cn/problems/assign-cookies/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        int ans = 0;
        ranges::sort(g);
        ranges::sort(s);
        int i = 0;
        for(int t : g){
            while(i < s.size() && s[i] < t){
                i++;
            }
            if(i >= s.size()){
                break;
            }
            i++;
            ans++;
        }
        return ans;
    }
};

376. 摆动序列

  • 题目链接: https://leetcode.cn/problems/wiggle-subsequence/description/
  • 题目描述

在这里插入图片描述

Code

class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {
        int n = nums.size();
        if(n < 2 || n == 2 && nums[0] != nums[1]){
            return n;
        }
        // int prev = 0;
        // int ans = 1;
        // for(int i = 1; i < n; i++){
        //     if(nums[i] == nums[i - 1]){
        //         continue;
        //     }
        //     int cur = nums[i] > nums[i - 1] ? 1 : -1;
        //     ans += cur != prev;
        //     prev = cur;
        // }

        strong_ordering pre = strong_ordering::equal;
        int ans = 1;
        for(int i = 1; i < n; i++){
            if(nums[i] == nums[i - 1]){
                continue;
            }
            auto cur = nums[i] <=> nums[i - 1];
            ans += cur != pre;
            pre = cur;
        }
        return ans;
    }
};

53. 最大子数组和

  • 题目链接: https://leetcode.cn/problems/maximum-subarray/description/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        // int ans = INT_MIN;
        // int min_pre_sum = 0;
        // int pre_sum = 0;
        // for(int t : nums){
        //     pre_sum += t;
        //     ans = max(ans, pre_sum - min_pre_sum);
        //     min_pre_sum = min(min_pre_sum, pre_sum);
        // }
        // return ans;

        // int n = nums.size();
        // vector<int> f(n);
        // f[0] = nums[0];
        // for(int i = 1; i < n; i++){
        //     f[i] = max(f[i - 1], 0) + nums[i];
        // }
        // return ranges::max(f);

        int ans = INT_MIN;
        int f = 0;
        for(int t : nums){
            f = max(f, 0) + t;
            ans = max(ans, f);
        }
        return ans;
    }
};

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 12:48:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 12:48:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 12:48:01       58 阅读
  4. Python语言-面向对象

    2024-07-18 12:48:01       69 阅读

热门阅读

  1. 边缘计算与图像识别:打造无缝的智能体验

    2024-07-18 12:48:01       24 阅读
  2. APScheduler的调度模式

    2024-07-18 12:48:01       18 阅读
  3. Electron 应用关闭突出程序坞

    2024-07-18 12:48:01       19 阅读
  4. 数据可视化入门

    2024-07-18 12:48:01       26 阅读
  5. 用mybatis-plus-generator快速构建简单代码

    2024-07-18 12:48:01       22 阅读
  6. LinearLayout实现原理分析

    2024-07-18 12:48:01       20 阅读
  7. 存储ODS数据的时候为什么在Hive中建立Iceberg表

    2024-07-18 12:48:01       19 阅读
  8. 基于 Gunicorn、Flask 和 Docker 的高并发部署模型

    2024-07-18 12:48:01       21 阅读
  9. 残月之肃-C++

    2024-07-18 12:48:01       18 阅读
  10. 升本1.0.5-规划-英语-207天

    2024-07-18 12:48:01       22 阅读
  11. CmakeLists

    2024-07-18 12:48:01       25 阅读