前缀和刷题-- LeetCode

news/2025/2/25 5:38:38

文章目录

  • 寻找数组的中心下标
    • 题解
    • 代码
  • 巧克力
    • 题解
    • 代码

寻找数组的中心下标

题目
在这里插入图片描述

题解

1. 预处理前缀和和后缀和数组,注意边界问题,f(0) = 0,g(n-1) = 0
2. 然后遍历数组一遍,f[i] == g[i],i就是下标
3. 时间复杂度是:O(N)

在这里插入图片描述

在这里插入图片描述

代码

class Solution 
{
public:
    int pivotIndex(vector<int>& nums) 
    {
        int n = nums.size();
        vector<int> f(n);
        vector<int> g(n);
        
        // 数组是0 - n-1,dp数组是1 - n-1,注意控制边界问题
        // 预处理前缀和数组
        for(int i = 1;i < n;i++) f[i] = f[i-1] + nums[i-1];
        // 预处理后缀和数组
        for(int i = n-2;i >= 0;i--) g[i] = g[i+1] + nums[i+1];

        for(int i = 0;i < n;i++)
        {
            if(f[i] == g[i]) return i;
        }

        return -1;
    }
};

巧克力

题目

题解

1. 一定要开long long,被卡数据了
2. 先预处里一个前缀和和后缀和数组,定义一个left和right,去找前缀和后缀相等的数,并且要求最大值
3. 如果左边大扩大后缀和数组,如果右边大扩大前缀和数组

代码

#include <iostream>
#include<algorithm>
using namespace std;

const int N = 2e5 + 10;
long long a[N+1], b[N+1];
int c[N+1];

int main()
{
    int n;
    cin >> n;


    for (int i = 1; i <= n; i++) cin >> c[i];

    for (int i = 1; i <= n; i++) a[i] = a[i - 1] + c[i];
    for (int i = n; i >= 1; i--) b[i] = b[i + 1] + c[i];

    long long m = 0;
    int left = 0,right = n+1;
    while(left < right)
    {
      if(a[left] == b[right])
      {
        if(a[left] > m) m = a[left];
        left++;
        right--;
      }
      else if(a[left] > b[right]) right--;
      else left++;
    }
    cout << m << '\n'; 

    return 0;
}

http://www.niftyadmin.cn/n/5865029.html

相关文章

HandBrake for Mac v1.9.2 视频压缩及格式转换 汉化版 支持M、Intel芯片

HandBrake 是一款开源的视频格式转换压缩工具。基本上支持所有常见的视频转式的转换以及压缩&#xff0c;压缩率高&#xff0c;压缩质量好。 应用介绍 Handbrake Mac是一款适用于Mac操作系统的视频转码器&#xff0c;能够将DVD或普通视频转换为高质量的MP4或MKV。HandBrake ma…

谈谈 ES 6.8 到 7.10 的功能变迁(3)- 查询方法篇

上一篇咱们了解了 ES 7.10 相较于 ES 6.8 新增的字段类型&#xff0c;这一篇我们继续了解新增的查询方法。 Interval 间隔查询&#xff1a; 功能介绍 Interval 查询&#xff0c;词项间距查询&#xff0c;可以根据匹配词项的顺序、间距和接近度对文档进行排名。主要解决的查询…

rust 前端npm依赖工具rsup升级日志

rsup是使用 rust 编写的一个前端 npm 依赖包管理工具&#xff0c;可以获取到项目中依赖包的最新版本信息&#xff0c;并通过 web 服务的形式提供查看、升级操作等一一系列操作。 在前一篇文章中&#xff0c;记录初始的功能设计&#xff0c;自己的想法实现过程。在自己的使用过…

云原生周刊:云原生和 AI

开源项目推荐 FlashMLA DeepSeek 于北京时间 2025 年 2 月 24 日上午 9 点正式开源了 FlashMLA 项目。FlashMLA 是专为 NVIDIA Hopper 架构 GPU&#xff08;如 H100、H800&#xff09;优化的高效多头潜在注意力&#xff08;MLA&#xff09;解码内核&#xff0c;旨在提升大模型…

EX_25/2/24

写一个三角形类&#xff0c;拥有私有成员 a,b,c 三条边 写好构造函数初始化 abc 以及 abc 的set get 接口 再写一个等腰三角形类&#xff0c;继承自三角形类 1&#xff1a;写好构造函数&#xff0c;初始化三条边 2&#xff1a;要求无论如何&#xff0c;等腰三角形类对象&#x…

echarts 环形图 指定区域从右侧中心点展开

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>ECharts 环形图不合理区域展示<…

Lua语言入门(自用)

全局与非全局 在lua语言当中没有被local表示的是全局变量 反之则是本地变量(仅仅作用在某个文件,函数,或者代码块) 下面是实例代码和运行结果 --hello.luaA 10;--这样就是全局变量,然后这个编译器如果是大写就是默认的全局变量 local b 3;--这样就是局部变量--reference.…

推送项目 之 解决冲突

文章目录 为什么会发生冲突&#xff1f;如何解决这些冲突&#xff1f;1. **查看冲突文件**2. **解决二进制文件冲突**3. **解决文本文件冲突**4. **标记冲突已解决**5. **完成合并**6. **推送更改** 注意事项总结 问题&#xff1a;我们在git pusll拉取远程仓库的代码到本地对比…