大厂秋招真题【模拟】OPPO20230802秋招提前批T1-小欧数组求和【欧弟算法】全网最全大厂秋招题解

news/2024/11/19 21:30:19/

题目描述

小欧拿到了一个数组,她有q次操作,每次操作修改一个元素。小欧希望每次修改后得到当前数组所有元素之和。你能帮帮她吗?

输入描述

第一行输入两个正整数nq,代表数组的大小和操作次数。

第二行输入n个正整数ai,代表小欧拿到的初始数组。

接下来的q行,每行输入两个正整数ix,代表将第i个元素修改为x

输出描述

输出q行,每行输出一个正整数,代表当前数组元素之和。

示例

输入

5 3
1 2 3 4 5
2 3
3 3
5 1

输出

16
16
12

说明

第一次修改后,数组变成[1,3,3,4,5],元素之和为16

第二次修改后,数组变成[1,3,3,4,5],元素之和为16

第三次修改后,数组变成[1,3,3,4,1],元素之和为12

解题思路

本题属于非常简单的模拟题。

对于某一次特定的修改,假设我们已知上一次修改后的数组和nums_sum,而本次修改将nums[i]修改为x,那么修改后的和应该为nums_sum-nums[i]+x。而此处修改后的和又可以作为下一次修改的上一次修改后的数组和来使用,即存在

nums_sum = nums_sum - nums[i] + x

需要被在本次修改后输出。同时nums[i]需要修改为x。上述核心代码为

nums_sum -= nums[i]
nums_sum += x
nums[i] = x

本题要特别注意,题目最后q行输入的索引值是从1开始的,故映射到数组的索引值,必须进行i -= 1的修改。

代码

python

# 题目:【模拟】OPPO2023秋招提前批-小欧数组求和
# 作者:闭着眼睛学数理化
# 算法:模拟
# 代码有看不懂的地方请直接在群上提问# 数组长度n,操作次数q
n, q = map(int, input().split())
# 初始数组nums
nums = list(map(int, input().split()))
# 计算初始数组nums的和
nums_sum = sum(nums)
# 储存q次修改的结果
ans = list()# 循环q次,修改q次
for _ in range(q):# 修改的位置i和修改的内容xi, x = map(int, input().split())# 注意i输入表示的是第i个元素,将其改为索引需要-1i -= 1# 将nums[i]修改为x,则整体的和需要减少nums[i],增加xnums_sum -= nums[i]nums_sum += x# 同时nums[i]被修改为xnums[i] = x# 将本次修改后的数组和nums_sum储存在ans中,方便后续按顺序输出ans.append(nums_sum)for num in ans:print(num)

Java

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int q = scanner.nextInt();int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = scanner.nextInt();}int numsSum = 0;for (int num : nums) {numsSum += num;}int[] ans = new int[q];for (int k = 0; k < q; k++) {int i = scanner.nextInt() - 1;int x = scanner.nextInt();numsSum -= nums[i];numsSum += x;nums[i] = x;ans[k] = numsSum;}for (int num : ans) {System.out.println(num);}}
}

C++

#include <iostream>
using namespace std;int main() {int n, q;cin >> n >> q;int nums[n];for (int i = 0; i < n; i++) {cin >> nums[i];}int numsSum = 0;for (int i = 0; i < n; i++) {numsSum += nums[i];}int ans[q];for (int k = 0; k < q; k++) {int i, x;cin >> i >> x;i--;numsSum -= nums[i];numsSum += x;nums[i] = x;ans[k] = numsSum;}for (int i = 0; i < q; i++) {cout << ans[i] << endl;}return 0;
}

时空复杂度

时间复杂度:O(N+q)。第一次计算nums的和的时间复杂度为O(N),进行q次修改的时间复杂度为O(q)

空间复杂度:O(1)。仅需若干常数变量。


华为OD算法/大厂面试高频题算法练习冲刺训练

  • 华为OD算法/大厂面试高频题算法冲刺训练目前开始常态化报名!目前已服务100+同学成功上岸!

  • 课程讲师为全网50w+粉丝编程博主@吴师兄学算法 以及小红书头部编程博主@闭着眼睛学数理化

  • 每期人数维持在20人内,保证能够最大限度地满足到每一个同学的需求,达到和1v1同样的学习效果!

  • 60+天陪伴式学习,40+直播课时,300+动画图解视频,300+LeetCode经典题,200+华为OD真题/大厂真题,还有简历修改、模拟面试、专属HR对接将为你解锁

  • 可上全网独家的欧弟OJ系统练习华子OD、大厂真题

  • 可查看链接 大厂真题汇总 & OD真题汇总(持续更新)

  • 绿色聊天软件戳 od1336了解更多


http://www.ppmy.cn/news/1158434.html

相关文章

echarts让设置legend宽度不生效

orient“horizontal” 的时候&#xff0c;只有width会起作用&#xff0c;height为auto&#xff1b;orient“vertical” 的时候只有height会起作用&#xff0c;width为auto。可以再textStyle里面设置宽度&#xff0c;宽度就会生效。一般设置30到50之间就可以。 legend: {orient:…

论文阅读 Memory Enhanced Global-Local Aggregation for Video Object Detection

Memory Enhanced Global-Local Aggregation for Video Object Detection Abstract 人类如何识别视频中的物体&#xff1f;由于单一帧的质量低下&#xff0c;仅仅利用一帧图像内的信息可能很难让人们在这一帧中识别被遮挡的物体。我们认为人们识别视频中的物体有两个重要线索&…

【计算机毕业设计】python在线课程培训学习考试系统637r7-PyCharm项目

使用说明 使用Navicat或者其它工具&#xff0c;在mysql中创建对应名称的数据库&#xff0c;并导入项目的sql文件&#xff1b; 使用PyCharm 导入项目&#xff0c;修改配置&#xff0c;运行项目&#xff1b; 将项目中config.ini配置文件中的数据库配置改为自己的配置&#xff0c;…

xml schema中的all元素

说明 xml schema中的all元素表示其中的子元素可以按照任何顺序出现&#xff0c;每个元素可以出现0次或者1次。 https://www.w3.org/TR/xmlschema-1/#element-all maxOccurs的默认值是1&#xff0c;minOccurs 的默认值是1。 举例 <element name"TradePriceRequest&…

电流反馈型运放以及PCB

电流反馈型运放&#xff0c;宽带放大器的布局布线&#xff0c;宽带放大器的PCB绘制的注意事项 控制放大倍数的芯片选择 高压摆率高输出功率只能选择TI THS系列 第&#xff08;6&#xff09;条实现不了整体闭环控制 反向输入端接电容会震荡&#xff0c;不接电容时可能会…

WAILS安装

支持的平台 Windows 10/11 AMD64/ARM64 MacOS 10.13 AMD64 MacOS 11.0 ARM64 Linux AMD64/ARM64 依赖 Wails 有许多安装前需要的常见依赖项&#xff1a; Go 1.18 NPM (Node 15) Go 从 Go 下载页面 下载 Go。 确保您遵守官方的 Go 安装说明。 您还需要确保您的 PATH 环境变…

流量代理——正向代理

流量代理 正向代理和反向代理 正向代理就是客户端和其他所有服务器&#xff08;重点&#xff1a;所有&#xff09;的代理者。 反向代理是客户端和所要代理的服务器之间的代理。 流量转发工具 需要放在拿到shell的服务器上可使用 lcx&#xff1a;端口流量转发&#xff0c;不具…

竞品价格怎么监测

品牌在做产品营销、产品定价时&#xff0c;除了要做好自身产品的研发设计外&#xff0c;需要非常了解市场&#xff0c;了解消费者偏好、了解竞品数据&#xff0c;通过对比分析&#xff0c;从而知道哪些价位的产品更受消费者喜爱&#xff0c;怎样设计产品更符合市场要求等&#…