news 2026/7/5 14:20:36

芝士算法(前缀和 1.0)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
芝士算法(前缀和 1.0)

目录

一维数组前缀和

二维数组前缀和

寻找数组的中心下标

除了自身以外数组的乘积


一维数组前缀和

一维数组前缀和

public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case 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 left = in.nextInt() , right = in.nextInt(); System.out.println(dp[right] - dp[left - 1]); q--; } }

二维数组前缀和

二维数组前缀和

public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { //写入数据 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(); } } //预处理 dp 表示 1-1 到 i-j 的所有和 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 - 1][j] + dp[i][j - 1] - 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--; } } }

避免越界 所以数组的创建 都是从(1,1)开始

寻找数组的中心下标

寻找数组的中心下标

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

除了自身以外数组的乘积

除了自身以外数组的乘积

public int[] productExceptSelf(int[] nums) { int n = nums.length; int []j = new int[n]; int []q = new int[n]; //预处理 j[0] = q[n - 1 ] = 1; for(int i = 1; i<n; i++ ) j[i] = j[i - 1] * nums[i - 1]; for(int i = n - 2; i>=0;i--) q[i] = q[i + 1] * nums[i + 1 ]; // int [] ret = new int [n]; for(int i = 0; i<n; i++) ret[i] = q[i] * j[i]; return ret; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 14:19:50

收藏!小白程序员必看:Hermes Agent 双 Loop 源码深度解析

Hermes Agent 源码中存在两套 Agent Loop&#xff1a;AIAgent 和 HermesAgentLoop。AIAgent 面向用户交互&#xff0c;处理流式输出、重试、中断等复杂交互逻辑&#xff1b;HermesAgentLoop 面向 RL 训练&#xff0c;关注异步、并发和训练数据生成。两者拆分是为了适应不同场景…

作者头像 李华
网站建设 2026/7/5 14:14:45

ORB-SLAM3 mFeatVec

mFeatVec&#xff08;Feature Vector&#xff0c;特征向量&#xff09;的计算原理&#xff0c;简单来说就是&#xff1a;为当前帧图像中的每个特征点&#xff0c;找到它在视觉词汇树中对应的中间节点&#xff08;叶子节点world ID 上溯4层的节点ID&#xff09;&#xff0c;并将…

作者头像 李华
网站建设 2026/7/5 14:13:05

Java面向对象课程设计:学生成绩管理系统

一、项目简介 本项目为Java面向对象课程设计&#xff0c;由三人小组协作开发学生成绩管理系统。项目遵循多层分层架构思想&#xff0c;基于MySQL实现数据持久化&#xff0c;依托JDBC完成程序与数据库交互&#xff0c;使用Swing搭建可视化GUI界面。项目全程采用Git协同开发&…

作者头像 李华
网站建设 2026/7/5 14:09:54

3步搞定Unity卡通渲染:从零到一掌握URP Toon Shader核心技巧

3步搞定Unity卡通渲染&#xff1a;从零到一掌握URP Toon Shader核心技巧 【免费下载链接】UnityURPToonLitShaderExample A very simple toon lit shader example, for you to learn writing custom lit shader in Unity URP 项目地址: https://gitcode.com/gh_mirrors/un/Un…

作者头像 李华
网站建设 2026/7/5 14:08:35

MC6470与dsPIC33EP运动控制方案在工业自动化中的应用

1. 项目概述&#xff1a;MC6470与dsPIC33EP512MU810的强强联合在工业自动化和高精度运动控制领域&#xff0c;系统响应速度和定位精度始终是工程师们追求的核心指标。最近我在一个智能仓储机器人项目中&#xff0c;尝试将MC6470运动控制器与Microchip的dsPIC33EP512MU810数字信…

作者头像 李华