华为OD机考:OD统一考试D卷+C卷+A卷+B卷+刷题OJ
真题目录:真题目录(D卷 + C卷 + B卷 + A卷) + 考点说明
必刷专栏:最新2024华为OD机试(Java/JS/Py/C/C++)+ OJ
在线OJ :点击立即刷题,模拟真实机考环境
华为OD面试真题精选:华为OD面试真题精选
题目描述
给你一个整数数组nums,请计算数组的中心位置,数组的中心位置是数组的一个下标,其左侧所有元素相乘的积等于右侧所有元素相乘的积。数组第一个元素的左侧积为1,最后一个元素的右侧积为1。
如果数组有多个中心位置,应该返回最靠近左边的那一个,如果数组不存在中心位置,返回**-1**。
输入描述
输入只有一行,给出N个正整数用空格分隔:nums = 2 5 3 6 5 6
1 <= nums.length <= 1024
1 <= nums[i] <= 10
输出描述
输出:3
解释:中心位置是3
用例
输入 2 5 3 6 5 6
输出 3
说明 无
题目解析
题目挺简单的,不过需要注意数据类型的范围。
代码思路
这道题的解题思路是先计算整个数组的乘积,然后从第二个数开始遍历数组,每次更新左右乘积,并判断左右乘积是否相等。如果左右乘积相等,说明当前数为中心位置,返回下标。如果遍历完整个数组都没有找到中心位置,返回-1。
C++