桐城市住房与建设网站,做网站切图是什么意思,网站建设中怎么写,大型医疗网站建设题目部分
题目阿里巴巴找黄金宝箱#xff08;V#xff09;难度易题目说明一贫如洗的樵夫阿里巴巴在去砍柴的路上#xff0c;无意中发现了强盗集团的藏宝地#xff0c;藏宝地有编号从0-N的箱子#xff0c;每个箱子上面贴有一个数字。 阿里巴巴念出一个咒语数字 k ( kN…题目部分
题目阿里巴巴找黄金宝箱V难度易题目说明一贫如洗的樵夫阿里巴巴在去砍柴的路上无意中发现了强盗集团的藏宝地藏宝地有编号从0-N的箱子每个箱子上面贴有一个数字。 阿里巴巴念出一个咒语数字 k ( kN )找出连续 k 个宝箱数字和的最大值并输出该最大值。输入描述第一行输入一个数字字串数字之间使用逗号分隔例如: 2,10,-3,-8,40,5。 1 ≤ 字串中数字的个数 ≤ 100000。 -10000 ≤ 每个数字 ≤10000。第二行输入咒语数字例如: 4咒语数字大小小于宝箱的个数。输出描述连续 k 个宝箱数字和的最大值例如: 39。补充说明无------------------------------------------------------示例示例1输入2,10,-3,-8,40,5输出39说明无示例2输入8 1输出8说明无 解读与分析
题目解读
给出 N 个数字求出这 N 个数字中连续 k k ≤ N个数字之和的最大值。
分析与思路
设数字放到数组 numArr 中从第 1 个元素 numArr[0] 开始求出连续 k 个数字numArr[0]、numArr[1] …… numArr[ k - 1]之和记录下来设为 tmpSum。设连续 k 个数字之和最大值为 maxSum初始复制为 maxSum tmpSum。然后向右滑动数字块一位在 即 tmpSum - numArr[0] numArr[ k ]如果它大于 maxSum则给 maxSum 赋新值直至遍历完所有的数字。
此方法只需要遍历一次数组时间复杂度为 O(n)空间复杂度为 O(1)。 代码实现
Java代码
import java.util.Scanner;/*** 阿里巴巴黄金宝箱* * since 2023.10.30* version 0.1* author Frank**/
public class AlibabaGoldBox5 {public static void main(String[] args) {Scanner sc new Scanner(System.in);while (sc.hasNext()) {String input sc.nextLine();String[] inputArr input.split(,);int[] numbers new int[inputArr.length];for (int i 0; i numbers.length; i) {numbers[i] Integer.parseInt(inputArr[i]);}input sc.nextLine();int k Integer.parseInt(input);processAlibabaGoldBox5(k, numbers);}}private static void processAlibabaGoldBox5(int k, int[] numbers) {int tmpSum 0;for (int i 0; i k; i) {tmpSum numbers[i];}int maxSum tmpSum;for (int i 0; i numbers.length - k; i) {tmpSum - numbers[i];tmpSum numbers[i k ];if (tmpSum maxSum) {maxSum tmpSum;}}System.out.println(maxSum);}} JavaScript代码
const rl require(readline).createInterface({ input: process.stdin });
var iter rl[Symbol.asyncIterator]();
const readline async () (await iter.next()).value;
void async function() {while (line await readline()) {var inputArr line.split(,);var numbers new Array();for (var i 0; i inputArr.length; i) {numbers[i] parseInt(inputArr[i]);}line await readline()var k parseInt(line);processAlibabaGoldBox5(k, numbers);}
}();function processAlibabaGoldBox5(k, numbers) {var tmpSum 0;for (var i 0; i k; i) {tmpSum numbers[i];}var maxSum tmpSum;for (var i 0; i numbers.length - k; i) {tmpSum - numbers[i];tmpSum numbers[i k];if (tmpSum maxSum) {maxSum tmpSum;}}console.log(maxSum);
} (完)