当前位置: 首页 > article >正文

32.日常算法

1.最大子数组和

题目来源
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。

示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int ret = nums[0];
        int sum = 0;
        for (auto & x : nums){
            sum += x;
            ret = max(ret, sum); // 判断
            if (sum < 0) sum = 0; // 一旦发现小于零,就直接从头开始计算
        }
        return ret;
    }
};

2.

题目来源
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法,且在 O(n) 时间复杂度内完成此题。

示例 1:
输入: nums = [1,2,3,4]
输出: [24,12,8,6]

class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        vector<int> prev(nums.size(), 1);
        vector<int> ret(nums.size());
        for (int i = 1; i < nums.size(); ++i){
            prev[i] = prev[i - 1] * nums[i - 1];
        }
        int r = 1;
        for (int i = nums.size() - 1; i >= 0; --i){
            ret[i] = prev[i] * r;
            r *= nums[i];
        }
        return ret;
    }   
};

http://www.kler.cn/a/537157.html

相关文章:

  • Mybatis篇
  • 项目顺利交付,几个关键阶段
  • 个人笔记---关于详解threadlocal 上下文环境存储的最佳数据类型
  • MySQL时间类型相关总结(DATETIME, TIMESTAMP, DATE, TIME, YEAR)
  • 逻辑起源 - 比较DS与豆包对“逻辑”源头的提炼差异
  • 四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)
  • javaEE初阶————多线程初阶(3)
  • 实现一个页面来维护定时任务,并在状态更改时实时启动或停止Job
  • PHP 面向对象编程详解
  • 使用PyCharm进行Django项目开发环境搭建
  • 【重新认识C语言----结构体篇】
  • 机器学习数学基础:16.方程组
  • C# 控制台接入DeepSeek
  • 使用ES5和ES6求函数参数的和、解析URL Params为对象
  • STM32 软件I2C读写MPU6050
  • Spring相关知识点
  • Centos挂载镜像制作本地yum源,并补装图形界面
  • 要替换PPT左上角的logo,可以通过几种方法实现‌。
  • 知识库管理系统与ChatGPT:如何用生成式AI打造智能知识助手?
  • TEE笔记
  • 基于SpringBoot和Leaflet的全国省会城市风景区分布分析实践
  • C++ Primer 成员访问运算符
  • 游戏引擎学习第91天
  • ubuntu下nfs使用笔记
  • vscode预览插件
  • 初识C语言、C语言的学习方向总述与入门