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

专题四:前缀和~

前缀和模板

前缀和思想中预处理是牺牲空间,换取时间
在这里插入图片描述

一、【模板】前缀和

链接: DP34 【模板】前缀和
在这里插入图片描述

public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt(),q = in.nextInt();int[] arr = new int[n + 1];for (int i = 1; i <= n; i++) arr[i] = in.nextInt();long[] dp = new long[n + 1];for (int i = 1; i <= n; i++) dp[i] = dp[i - 1] + arr[i];while(q > 0) {int l = in.nextInt(),r = in.nextInt();System.out.println(dp[r] - dp[l - 1]);q--;}}

二、【模板】二维前缀和

链接: DP35 【模板】二维前缀和
在这里插入图片描述

public static void main1(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt(),m = in.nextInt(),q = in.nextInt();int[][] arr = new int[n + 1][m + 1];for(int i = 1; i <=n; i++) {for (int j = 1; j <= m; j++) {arr[i][j] = in.nextInt();}}long[][] dp = new long[n + 1][m + 1];for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {dp[i][j] = dp[i][j - 1] + dp[i - 1][j] -dp[i - 1][j - 1] + arr[i][j];}}while (q > 0) {int x1 = in.nextInt(),y1 = in.nextInt(),x2 = in.nextInt(),y2 = in.nextInt();System.out.println(dp[x2][y2] - dp[x1 - 1][y2] - dp[x2][y1 - 1] + dp[x1 -1][y1 - 1]);q--;}}

三、寻找数组的中心下标

链接: 724. 寻找数组的中心下标
在这里插入图片描述

public int pivotIndex(int[] nums) {int n = nums.length;int[] f = new int[n]; f[0] = 0;int[] g = new int[n]; g[n - 1] = 0;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;}

四、除自身以外数组的乘积

链接: 238. 除自身以外数组的乘积

在这里插入图片描述

public int[] productExceptSelf(int[] nums) {int n = nums.length;int[] f = new int[n]; f[0] = 1;int[] g = new int[n]; g[n - 1] = 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];int[] answer = new int[n];for (int i = 0; i < n; i++)answer[i] = f[i] * g[i];return answer;}

五、和为 K 的子数组

链接: 560. 和为 K 的子数组
在这里插入图片描述

public int subarraySum(int[] nums, int k) {Map<Integer,Integer> hash = new HashMap<Integer,Integer>();hash.put(0,1);int sum = 0,ret = 0;for (int x :nums) {sum += x;ret += hash.getOrDefault(sum - k,0);hash.put(sum,hash.getOrDefault(sum,0) + 1);}return ret;}

六、和可被 K 整除的子数组

链接: 974. 和可被 K 整除的子数组
在这里插入图片描述

public int subarraysDivByK(int[] nums, int k) {Map<Integer,Integer> hash = new HashMap<Integer,Integer>();hash.put(0 % k,1);int sum = 0,ret = 0;for (int x : nums) {sum += x;int r = (sum % k + k) % k;ret += hash.getOrDefault(r,0);hash.put(r,hash.getOrDefault(r,0) + 1);}return ret;}

七、连续数组

链接: LCR 011. 连续数组
在这里插入图片描述

public int findMaxLength(int[] nums) {Map<Integer,Integer> hash = new HashMap<Integer,Integer>();hash.put(0,-1);int sum = 0,ret = 0;for (int i = 0; i < nums.length; i++) {sum += nums[i] == 0 ? -1 : 1;if (hash.containsKey(sum)) ret = Math.max(ret,i - hash.get(sum));else hash.put(sum,i);}return ret;}

八、 矩阵区域和

链接: 1314. 矩阵区域和
在这里插入图片描述

public int[][] matrixBlockSum(int[][] mat, int k) {int m = mat.length,n = mat[0].length;int[][] dp = new int [m + 1][n + 1];for (int i = 1;i <= m;i++){for (int j = 1;j <= n;j++) {dp[i][j] = dp[i - 1][j] + dp[i][j - 1] -dp[i - 1][j - 1] + mat[i - 1][j - 1];}}int[][] ret = new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {int x1 = Math.max(0,i - k) + 1,y1 = Math.max(0,j - k) + 1;int x2 = Math.min(m - 1,i + k) + 1,y2 = Math.min(n - 1,j + k) + 1;ret[i][j] = dp[x2][y2] - dp[x2][y1 - 1] - dp[x1 - 1][y2] + dp[x1 - 1][y1 - 1];}}return ret;}

本期内容到此为止,喜欢的话请点个赞,谢谢观看!!!

http://www.dtcms.com/a/461989.html

相关文章:

  • C++八股 —— 线程本地存储技术
  • 位运算题5:出现k次与出现1次
  • 我们为什么需要Agent?
  • MLMs之Sora:Sora 2(开启真实物理与创意融合的新一代视频生成平台)的简介、安装和使用方法、案例应用之详细攻略
  • (1)100天python从入门到拿捏
  • 昆明网站定制制作logo网站
  • 个人做哪方面的网站网站续费怎么做
  • Differential evolution with collective ensemble learning
  • 东莞网站推广策划wordpress怎么改标题和meta
  • jquery mvvm框架
  • 做外贸的几个网站如何添加网站白名单
  • 统一 IT 服务台平台:让企业服务运转更高效
  • 在线做c语言题目的网站免费自助在线公司起名
  • 70行代码展现我的“毕生”编程能力
  • C++ List
  • 从指令到智能:大型语言模型提示词工程与上下文工程的综合分析
  • wordpress清理过期文件夹电商seo
  • html网站尺寸成立公司需要哪些资料
  • 物联网边缘节点中的MEMS传感器低功耗设计实战
  • 当工业生产遇上RFID:智能追溯让制造全流程“透明可见”
  • LeetCode 刷题【109. 有序链表转换二叉搜索树】
  • 建设企业网站模板下载黑龙江省建设工程质量安全协会网站
  • VMware 安装 Ubuntu 24.04(稳定版本) 母胎教学
  • 巴城镇建设网站微信微网站制作公司
  • Linux 系统配置 NTP 服务:轻松同步阿里云时间服务器
  • 网站建设公司列表网加强网站建设工作
  • 深度学习之模型的部署、web框架 服务端及客户端案例
  • 《投资-113》价值投资者的认知升级与交易规则重构 - 复利故事终止的前兆
  • 从 “黑盒“ 到 “透明“:SkyWalking 实战指南 —— 让微服务问题无所遁形
  • 网站流量增加专门做物理的网站