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

算法_前缀和

DP34 【模板】前缀和

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别int n = in.nextInt(),q = in.nextInt();int[] arr = new int[n+1];for(int i = 1; i < n+1; i++){arr[i] = in.nextInt();}long[] dp = new long[n+1];for(int i = 1; i < n+1; 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--;}// while (in.hasNextInt()) { // 注意 while 处理多个 case//     int a = in.nextInt();//     int b = in.nextInt();//     System.out.println(a + b);// }}
}

 DP35 【模板】二维前缀和

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(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+1; i++){for(int j = 1; j < m+1; j++){arr[i][j] = in.nextInt(); }}long[][] dp= new long[n+1][m+1];for(int i = 1; i < n+1; i++){for(int j = 1; j < m+1; j++){dp[i][j] = dp[i][j-1] + dp[i-1][j] + arr[i][j] - dp[i-1][j-1];}}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--;}// 注意 hasNext 和 hasNextLine 的区别}
}

 724. 寻找数组的中心下标

class Solution {public int pivotIndex(int[] nums) {int[] dp = new int[nums.length];dp[0] = nums[0];for(int i = 1; i < nums.length; i++){dp[i] = dp[i-1] + nums[i];}if(0 == dp[nums.length-1] -dp[0] ){return 0;}for(int i = 1; i < nums.length; i++){if(dp[i-1] == dp[nums.length-1] - dp[i]){return i;}}return -1;}
}

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

class Solution {public int[] productExceptSelf(int[] nums) {int l = nums.length;int[] f = new int[l];  int[] g = new int[l];  f[0] = 1;g[l-1] = 1;  for(int i = 1; i < l; i++){f[i] = f[i-1]*nums[i-1];}for(int i = l-2; i >= 0; i--){g[i] = g[i+1]*nums[i+1];}int[] answer = new int[l];for(int i = 0; i < l; i++){answer[i] = f[i]*g[i];}return answer;}
}

 560. 和为 K 的子数组

974. 和可被 K 整除的子数组 

http://www.lryc.cn/news/349072.html

相关文章:

  • C语言(指针)7
  • 线程纵横:C++并发编程的深度解析与实践
  • 在阿里云服务器上安装MySQL
  • 国标GB28181协议EasyCVR视频汇聚平台获取设备录像仅展示部分片段的原因排查
  • Java的类和对象(一)—— 初始类和对象,this关键字,构造方法
  • 富格林:曝光虚假套路规避亏损
  • 数据源网站分享
  • Flutter 中的 CupertinoAlertDialog 小部件:全面指南
  • 【RAG 论文】UPR:使用 LLM 来做检索后的 re-rank
  • 安全风险 - 如何解决 setAccessible(true) 带来的安全风险?
  • 创建继承自QObject的线程:一个详细指南
  • java项目之智慧图书管理系统设计与实现(springboot+vue+mysql)
  • 分享一些人生道理,希望能对大家有所帮助!
  • 【设计模式】JAVA Design Patterns——Abstract-document(抽象文档模式)
  • 5.13网络编程
  • 那些年使用过的UA头
  • IT技术产品:开发者极为重要的思维习惯
  • 软件产品质量模型及其子特性
  • 神经网络中的误差反向传播(Backpropagation)方法理解
  • Day 32 shell变量及运算
  • 八、VUE内置指令
  • 学习笔记:IEEE 1003.13-2003【POSIX PSE53接口列表】
  • springboot logback 日志注入安全问题 统一处理
  • linux进阶高级配置,你需要知道的有哪些(13)-Squid代理服务器
  • SpringBoot自动装配(二)
  • 数据结构 顺序表1
  • C++基础-编程练习题1
  • 四十九坊股权设计,白酒新零售分红制度,新零售策划机构
  • 如何将公众号添加到CSDN个人主页
  • 64K方法数限制原理及解决方案