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

前缀和刷题-- LeetCode

文章目录

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

寻找数组的中心下标

题目
在这里插入图片描述

题解

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;
}

相关文章:

  • 第四章:文本分类
  • 从零开始玩转TensorFlow:小明的机器学习故事 5
  • 欧拉筛法寻找素数与计算欧拉函数求和
  • 【Gin-Web】Bluebell社区项目梳理6:限流策略-漏桶与令牌桶
  • 服务器能否拒绝非浏览器发起的HTTP请求?
  • css文本两端对齐
  • 微信小程序 - 条件渲染(wx:if、hidden)与列表渲染(wx:for)
  • LeetCode-34. 在排序数组中查找元素的第一个和最后一个位置
  • 本地开发用ASP.NET Core Web API项目创建及测试
  • AF3 中扩散模型类总结
  • 使用C++实现简单的TCP服务器和客户端
  • 山东大学软件学院nosql实验四
  • docker离线安装及部署各类中间件(x86系统架构)
  • 【Microsoft PowerPoint for Mac】2分钟配置-MAC一键删除PPT中的所有备注
  • MTK Android12 预装apk可卸载
  • 一文讲解Redis中和本地缓存之间的一致性问题及区别等
  • 用Deepseek直接在word中完成论文的润色(中-中,中-英, 英-中)
  • 如何安装VMware
  • 基于不完整多模态神经影像的阿尔茨海默病诊断领域特定信息保留|文献速递-医学影像人工智能进展
  • 深度学习训练平台建设中的性能优化实践
  • 如何防止网站被劫持/百度关键词排名手机
  • 组建个人网站/最近国家新闻
  • 石家庄微信网站制作/自媒体135网站免费下载安装
  • 个性化网站开发/对seo的认识和理解
  • 百度网站建设技术/电商网站规划
  • 没网站怎么做淘宝客/专门开发小程序的公司