华为OD机试真题 Python 实现【数组的中心位置】【2023Q1 100分】,附详细解题思路

news2024/11/25 2:37:03

在这里插入图片描述

目录

    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Python算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出

一、题目描述

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

二、输入描述

输入只有一行,给出N个正整数用空格分隔,nums = 2 5 3 6 5 6

1 <= nums.length <= 1024

1 <= nums[i] <= 10

三、输出描述

3

四、解题思路

  1. 读取输入的整数数组nums
  2. 获取数组的长度n
  3. 初始化中间位置middlen / 2
  4. 初始化左边乘积的标志leftFlagtrue,右边乘积的标志rightFlagfalse
  5. 创建一个列表list,用于存储中心位置的下标。
  6. 进入一个无限循环,直到找到中心位置或完成搜索。
  7. 在循环中,计算左边数的乘积和右边数的乘积,并将它们进行比较。
  8. 如果左边乘积等于右边乘积,将当前中心位置加入到list中。
  9. 如果左边乘积的标志leftFlagtrue,将中心位置向左移动一位,如果已经到达数组的最左边,则将左边乘积的标志设为false,右边乘积的标志设为true,并将中心位置重置为n / 2
  10. 如果右边乘积的标志rightFlagtrue,将中心位置向右移动一位,如果已经到达数组的最右边,则退出循环。
  11. 循环结束后,检查列表list的大小。
  12. 如果列表为空,表示数组不存在中心位置,输出-1。
  13. 否则,将列表list排序,并输出最靠近左边的中心位置的下标。

该算法的时间复杂度为O(N),其中N是数组的长度。在最坏情况下,需要遍历整个数组来计算左边和右边的乘积。最终的空间复杂度取决于列表list的大小,即O(1)O(N)之间。

五、Python算法源码

a=input().split()
b=[int(i) for i in a]
l=1
r=1
mid=[]
for i in range(0,len(b)):
    for j in b[:i]:
        l=j*l
    for k in b[i+1:]:
        r=r*k
    if l==r:
        mid.append(i)
    l=1
    r=1
if len(mid)>0:
    print(mid[0])
else:
    print("-1")

六、效果展示

1、输入

2 5 3 6 5 6

2、输出

3

在这里插入图片描述


🏆下一篇:华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(Python)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/719173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Fiddler 工具的使用

文章目录 01 Fiddler 工具介绍1. 下载与安装2. Fiddler 工具界面介绍3. Fiddler 工具的工作原理 02 手工调用 HTTP 接口1. 发送HTTP请求2. 查看返回数据包 03 获取 PC 端的网络数据包04 获取手机端的网络数据包05 截包与改包场景一&#xff1a;截断请求数据&#xff0c;然后篡改…

一键安装和卸载docker及docker-compose

代码&#xff1a; #!/bin/bashSYSTEMD_PATH/usr/lib/systemd/system/docker.service DOCKER_FILEdocker-20.10.23.tgz DOCKER_COMPOSE_FILEdocker-compose-plugin-2.15.1-3.el8.x86_64.rpm RED\E[1;31m GREEN\E[1;32m YELOW\E[1;33m SHAN\E[1;31;5m RES\E[0mfunction install_…

项目中期检查会议和进度对接

1.召开中期项目检查会议&#xff0c;与团队成员和博士王锟对接进度。对整体项目表示满意接受&#xff0c;指出重点需要修改提升和进一步开发完善的部分&#xff0c;以增强系统的完整度、功能亮点和界面数量点。具体为 ①注重“highlight”&#xff0c;即布局凸显主题功能&…

spring cloud 之 ribbon

Ribbon概念 Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具&#xff0c;主要功能是提供客户端负载均衡算法和服务调用。简单的说&#xff0c;就是在配置文件中列出 Load Balance&#xff08; LB&#xff1a;将用户的请求平摊的分配到多个服务上&a…

JavaScript ES5中实现继承

1 对象和函数的原型 2 new、constructor 3 原型链的查找顺序 4 原型链实现的继承 5 借用构造函数继承 6 寄生组合实现继承 function 创建的名称如果开头是大写的&#xff0c;那这个创建的不是函数&#xff0c;是创建了类。 要注意区分&#xff01;本章很多这样子的类。 实…

热烈祝贺! 爱创科技加入中经联溯源技术专业委员会!

6月27日&#xff0c;中国商业股份制企业经济联合会溯源技术专业委员会为北京爱创科技股份有限公司举行入会授牌仪式。授牌仪式由溯源技术专业委员会副秘书长卢要宁同志主持&#xff0c;溯源技术专业委员会主任宁晓鹏及北京爱创科技股份有限公司企业发展规划部总监杜薇出席。 在…

【网络安全带你练爬虫-100练】第3练:遍历获取到的列表中元素

目录 一、前言&#xff1a; 二、分析代码 三、完善代码 一、前言&#xff1a; &#xff08;1&#xff09;本练&#xff0c;我们来完善一下对于数据的处理 &#xff08;2&#xff09;对于同一标签内的内容的遍历爬取 上一段代码的&#xff0c;我们是不是在那个曾用名、高新…

库管理 + 表管理

REVIEW CREATE DROP DATABASE SELECT DATABASE(); SHOW DATABASES ;CREATE DATABASE IF NOT EXISTS GAMEDB ; DROP DATABASE IF EXISTS GAMEDB; CREATE SHOW ALTER TABLE 如何给表头重命名 CREATE TABLE student.studentinfo(name char(10), sex char(10), class char(5…

Redis的介绍和安装教程(配置文件)

1.Redis简单的介绍 redis是一种键值对的NoSql数据库&#xff0c;这里有两个关键字&#xff1a; 键值对 Nosql 其中键值型&#xff0c;是指Redis中存储的数据都是以key.value对的形式多种多样&#xff0c;可以实字符串、数值、甚至json&#xff0c;可以参考HashMap 然后NoSq…

[CSCCTF 2019 Qual] FlaskLight

打开链接&#xff0c;在注释里发现了参数名和请求方式 结合题目flask&#xff0c;检查是否存在SSTI模块注入&#xff1a; ?search{{7*7}} &#xff08;如果对这类题不了解的建议先看我另一篇博客http://t.csdn.cn/4d812&#xff09; 通过回显发现被执行了&#xff0c;存在S…

NacosConfig获取不到配置中心

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.0.3</version></dependency> 版本说明 alibaba/spring-cloud-alibaba Wiki (github.com) …

【STM32智能车】小车状态

【STM32智能车】小车状态 搭建智能车 65MM轮径小车所选材料安装说明直行测试智能车可能存在的状态 智能车功能丰富&#xff0c;我们从最基础的开始&#xff0c;先来搭建一个智能车吧~。 搭建智能车 我们之前用了一个测试板子去学习调试电机&#xff0c;是时候拼装一个简单的车来…

CSS弹性盒子中弹性子元素文本超出弹性子元素宽或高后导致撑开弹性子元素原本宽或高的解决方法

当使用弹性布局时&#xff0c;设置父容器为弹性容器后&#xff0c;弹性子元素的文本内容超出宽或高后会撑开弹性子元素的原本应该显示的宽高&#xff0c;溢出父容器&#xff0c;只要设置弹性子元素的宽或高&#xff08;由父容器弹性排列方向决定&#xff09;的属性值为0即可解决…

echarts dataZoom.slider is used but not imported.

使用dataZoom时图表报错&#xff1a; resize should not be called during main process. omponent dataZoom.slider is used but not imported. 解决方法&#xff1a; 在使用的页面种单独引入一下dataZoom&#xff1a; import ‘echarts/lib/component/dataZoom’;

Redis【实战篇】---- Redis消息队列

Redis【实战篇】---- Redis消息队列 1. Redis消息队列 - 认识消息队列2. Redis消息队列 - 基于List实现消息队列3. Redis消息队列 - 基于PubSub的消息队列4. Redis消息队列 - 基于Stream的消息队列5. Redis消息队列 - 基于Stream的消息队列-消费组6. 基于Redis的Stream结构作为…

环肽抑制剂:1088715-84-7,LY2510924,LY2510924游离态,试剂相关特点说明

​编辑资料作者&#xff1a;陕西新研博美生物科技有限公司小编MISSwu​ LY2510924&#xff0c;LY2510924游离态&#xff0c;拮抗剂LY2510924&#xff0c;环肽&#xff0c;抑制剂 Product structure&#xff1a; Product specifications&#xff1a; 1.CAS No&#xff1a;10887…

机器学习基础之《特征工程(1)—数据集》

一、数据集 1、目标 知道数据集分为训练集和测试集 会使用sklearn的数据集 2、可用数据集 公司内部&#xff0c;比如百度、微博 数据接口&#xff0c;花钱 政府拥有的数据集 3、在学习阶段用到的数据集 scikit-learn特点&#xff1a; &#xff08;1&#xff09;数据量较小 &…

SpringBoot配置外部Tomcat项目启动流程源码分析

前言 SpringBoot应用默认以Jar包方式并且使用内置Servlet容器(默认Tomcat)&#xff0c;该种方式虽然简单但是默认不支持JSP并且优化容器比较复杂。故而我们可以使用习惯的外置Tomcat方式并将项目打War包。 【1】创建项目并打War包 ① 同样使用Spring Initializer方式创建项目 …

宝塔Panel搭建Python环境

服务器安装python环境 找到软件商店 应用搜索 输入&#xff1a;python 安装Python项目管理器2.4 开启首页显示 回到首页 找到python管理器并点击进入 安装对应的python版本 到这里 服务器就可以告一段落了 在本地开发服务端应用并上传服务器 将写好的python应用 导出依赖…

蓝桥杯专题-真题版含答案-【世纪末的星期】【猜年龄】【组素数】【第39级台阶】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…