自己电脑做网站模板,自己开发小程序,长春seo排名扣费,做公司网站哪里好分割数组的最大差值 - 华为OD统一考试 OD统一考试 分值#xff1a; 100分 题解#xff1a; Java / Python / C 题目描述
给定一个由若干整数组成的数组nums #xff0c;可以在数组内的任意位置进行分割#xff0c;将该数组分割成两个非空子数组(即左数组和右数组)#xf…分割数组的最大差值 - 华为OD统一考试 OD统一考试 分值 100分 题解 Java / Python / C 题目描述
给定一个由若干整数组成的数组nums 可以在数组内的任意位置进行分割将该数组分割成两个非空子数组(即左数组和右数组)分别对子数组求和得到两个值.计算这两个值的差值请输出所有分割方案中差值最大的值。
输入描述
第一行输入数组Q中元素个数n1 n 100000
第二行输入数字序列以空格进行分隔数字取值为4字节整数
输出描述
输出差值的最大取值
示例1
输入
6
1 -2 3 4 -9 7输出
10题解 简单模拟题需要小心的是数据范围。 Java
import java.util.Scanner;
/*** author code5bug*/
public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int[] nums new int[n];long sum 0;for (int i 0; i n; i) {int num scanner.nextInt();sum num;nums[i] num;}long maxAbs 0, leftSum 0;for (int i 0; i n - 1; i) {leftSum nums[i];// rightSum sum - leftSum, 差值 rightSum - leftSum Math.abs(sum - leftSum)maxAbs Math.max(maxAbs, Math.abs(sum - 2 * leftSum));}System.out.println(maxAbs);}
}
Python
n int(input())
nums list(map(int, input().split()))sum_val,max_abs,left_sum sum(nums),0,0for i in range(n - 1):left_sum nums[i]# right_sum sum - left_sum, 差值 right_sum - left_sum abs(sum - left_sum)max_abs max(max_abs, abs(sum_val - 2 * left_sum))print(max_abs)
C
#include iostream
#include vector
#include algorithmusing namespace std;int main() {long long sum 0;int n, num;cin n;vectorint nums(n);for(int i0; in; i) {cin num;sum num;nums[i] num;}long long max_abs 0, left_sum 0;for(int i0; in-1; i) {left_sum nums[i];// right_sum sum - left_sum, 差值 right_sum - left_sum abs(sum - left_sum)max_abs max(max_abs, abs(sum - 2 * left_sum));}cout max_abs endl;
}
整理题解不易 如果有帮助到您请给点个赞 ❤️ 和收藏 ⭐让更多的人看到。