我的编程空间,编程开发者的网络收藏夹
学习永远不晚

2023华为OD机试真题【计算数组中心位置】【Java Python】

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

2023华为OD机试真题【计算数组中心位置】【Java Python】

题目描述

给你一个整数数组nums,请计算数组的中心位置。数组的中心位置是数组的一个下标, 其左侧所有元素相乘的积等于右侧所有元素相乘的积。数组第一个元素的左侧积为1,最后一个元素的右侧积为1。 如果数组有多个中心位置,应该返回最靠近左边的那一个,如果数组不存在中心位置,返回-1。

输入

2 5 3 6 5 6

输出

3

题意解读

左侧积:该元素左侧所有元素的乘积;
右侧积:该元素右侧所有元素的乘积;

例如元素3,他的左侧积是 2*5 = 10. 他的右侧积是6*5*6 = 180
在这里插入图片描述

数组的中心位置指的是:该元素的 左侧积 等于 右侧积

解题思路

遍历整个数组,在遍历的过程中,计算当前元素左侧所有元素的乘积leftProduct )和右侧所有元素乘积rightProduct ),当leftProduct == rightProduct,表示找到了中心位置。

那么,如何初始化左侧积leftProduct 和右侧积 rightProduct 呢?leftProduct 初始值为 1,rightProduct初始值是所有元素相乘。

初始化完成后,开始遍历数组,从左到右的顺序遍历 。对于当前位置 i,首先更新左侧积(如果 i 不是第一个元素,那么左侧积为 leftProduct * nums[i-1]),然后更新右侧积(rightProduct / nums[i])。

如果左侧积和右侧积相等,则表示i就是中心点。

视频讲解

2023华为机试真题【计算数组中心位置】

示例代码(Java版本)

import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        String[] inputs = scanner.nextLine().split(" ");        int[] numbers = new int[inputs.length];                for (int i = 0; i < inputs.length; i++) {            numbers[i] = Integer.parseInt(inputs[i]);        }        int index = findCenterIndex(numbers);        System.out.println(index);    }    public static int findCenterIndex(int[] nums) {        if (nums.length == 1) {            return 0;        }        int totalProduct = 1;        for (int num : nums) {            totalProduct *= num;        }        int leftProduct = 1;        for (int i = 0; i < nums.length; i++) {            int rightProduct = totalProduct / nums[i];                        if (leftProduct == rightProduct) {                return i;            }            leftProduct *= nums[i];            totalProduct /= nums[i];        }        return -1;    }}

示例代码(Python版本)

def find_center_index(nums):    if len(nums) == 1:        return 0    total_product = 1    for num in nums:        total_product *= num    left_product = 1    for i in range(len(nums)):        right_product = total_product // nums[i]                if left_product == right_product:            return i        left_product *= nums[i]        total_product //= nums[i]    return -1if __name__ == "__main__":    nums = list(map(int, input().split()))    print(find_center_index(nums))

来源地址:https://blog.csdn.net/wtswts1232/article/details/130217850

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

2023华为OD机试真题【计算数组中心位置】【Java Python】

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

2023华为OD机试真题【计算数组中心位置】【Java Python】

题目描述 给你一个整数数组nums,请计算数组的中心位置。数组的中心位置是数组的一个下标, 其左侧所有元素相乘的积等于右侧所有元素相乘的积。数组第一个元素的左侧积为1,最后一个元素的右侧积为1。 如果数组有多个中心位置,应该返回最靠近左边的
2023-08-30

2023华为OD机试真题【区间交叠/贪心算法】【Python Java】

题目描述 给定坐标轴上的一组线段,线段的起点和终点均为整数并且长度不小于1,请你从中找到最少数量的线段,这些线段可以覆盖住所有线段。 输入描述 第一行输入为所有线段的数量,不超过10000,后面每行表示一条线段,格式为”x,y”, x
2023-08-18

华为OD机试真题2023Q1 100分 + 2023 B卷(Java&Python&JavaScript)

目录 2023 5月 B卷 “新加题”(100分值)2023Q1 100分下面分享一道“2023Q1 200分 机器人活动区域”的解题思路一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入
2023-08-19

【华为OD机试真题 2022&2023】真题目录 已支持(C++&Java&python)100%通过率

【华为OD机试真题】信号发射和接收 &试读& @点这里@ 【华为OD机试真题】租车骑绿道 &试读& @点这里@ 【华为OD机试真题】微服务的集成测试 &试读& @点这里@ 2023年华为OD机试最新题库-5月份更新B卷题目更新中。。。 老题
2023-08-20

华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】

目录 一、题目描述二、输入描述三、输出描述样例:输出样例: 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明4、再输入5、再说明6、如果走后一次请求的是20,会怎么样呢? 华为OD机试
2023-08-22

【华为OD机试真题】15、数组拼接 | 机试真题+思路参考+代码解析(C语言、C++、Java、Py、JS)

文章目录 一、题目 ?题目描述 ?输入输出 ?样例1 ?样例2 二、代码与思路参考 ?C语言思路
2023-08-24

华为OD机试真题目录汇总(C语言、C++、Java、Python、JS五种语言解法)2023 B卷

文章目录 🚀前言🚀其他华为OD机试题清单一、什么是华为OD,什么是华为OD机试?二、华为OD面试流程?三、华为OD机试通过率高吗?四、华为OD薪资待遇?🚀五、怎么刷题?通过华为OD机试
2023-08-16

【华为OD机试真题】66、新工号中数字的最短长度 | 机试真题+思路参考+代码解析(C语言、C++、Java、Py、JS)

文章目录 一、题目 ?题目描述 ?输入输出 ?样例1 ?样例2 ?样例3 二、代码与思路参考
2023-08-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录