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

前缀和专题

板子:

(占坑)

Leetcode 238. 除自身以外数组的乘积

优化前:使用前后缀数组记录

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n = nums.size();vector<int> pre(n, 1), suf(n, 1), ans(n, 0);for(int i = 0; i < n; i ++)pre[i] = (i==0?1:pre[i - 1]) * nums[i];for(int i = n - 1; i >= 0; i --)suf[i] = (i==(n - 1)? 1 : suf[i + 1]) * nums[i];for(int i = 0; i < n; i ++)ans[i] = (i==0?1:pre[i - 1])  * (i==(n-1)?1:suf[i + 1]);return ans;}
};

优化后:

先计算 pre,然后一边计算 suf,一边把 suf直接乘到 pre[i] 中。最后返回 pre。(注意:suf是从1开始累乘的)

题目说「输出数组不被视为额外空间」,所以该做法的空间复杂度为 O(1)。此外,这种做法比上面少遍历了一次。

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n = nums.size();vector<int> pre(n, 1);// 计算出前缀和数组for(int i = 1; i < n; i ++)pre[i] = pre[i - 1] * nums[i - 1];// 针对前缀和数组补上后缀计算部分即可int suf = 1;for(int i = n - 1; i >= 0; i --){pre[i] = pre[i] * suf;suf *= nums[i];}return pre;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 什么是云边协同?
  • 考研数一|极限的计算(笔记)
  • OGG转MP3音频格式转换:6种免费音频转换器推荐
  • Linux网络协议.之 tcp,udp,socket网络编程(三).之多进程实现并发demon
  • 通过java.netHttpURLConnection类实现java发送http请求
  • 【拓扑排序topsort】——启动!!!
  • 高清无水印视频素材哪里找?分享几个热门的高清无水印素材网站
  • html语法
  • mysql源码编译启动debug
  • 东方博宜24年8月-C组 - 屋顶
  • C++ | Leetcode C++题解之第328题奇偶链表
  • unity草体渲染方案 GPU Instaning
  • 数据结构(学习)2024.8.6
  • 数据库原理之多表查询——使用Mysql进行内连接和外连接
  • 【学习方法】高效学习因素 ② ( 学习动机 | 内在学习动机 | 外在学习动机 | 外在学习动机的调整方向 | 保护学习兴趣 | 高考竞争分析 )
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 2018一半小结一波
  • canvas 绘制双线技巧
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Mysql数据库的条件查询语句
  • overflow: hidden IE7无效
  • Ruby 2.x 源代码分析:扩展 概述
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Vue学习第二天
  • 笨办法学C 练习34:动态数组
  • 构建二叉树进行数值数组的去重及优化
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何学习JavaEE,项目又该如何做?
  • 如何用vue打造一个移动端音乐播放器
  • 算法-图和图算法
  • 微服务框架lagom
  • 我感觉这是史上最牛的防sql注入方法类
  • 一道闭包题引发的思考
  • - 转 Ext2.0 form使用实例
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • k8s使用glusterfs实现动态持久化存储
  • mysql面试题分组并合并列
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • #pragma预处理命令
  • ( 10 )MySQL中的外键
  • (12)Linux 常见的三种进程状态
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (java)关于Thread的挂起和恢复
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (回溯) LeetCode 78. 子集
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (三)模仿学习-Action数据的模仿
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...