寻找数组的中心索引

给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。

我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。

如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。

示例 1:

输入:
nums = [1, 7, 3, 6, 5, 6]
输出: 3
解释:
索引3 (nums[3] = 6) 的左侧数之和(1 + 7 + 3 = 11),与右侧数之和(5 + 6 = 11)相等。
同时, 3 也是第一个符合要求的中心索引。

示例 2:

输入:
nums = [1, 2, 3]
输出: -1
解释:
数组中不存在满足此条件的中心索引。

说明:

  • nums 的长度范围为 [0, 10000]
  • 任何一个 nums[i] 将会是一个范围在 [-1000, 1000]的整数。

起先我的思路是从第一个索引左累加、右累加判断是否想等:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {List<Integer> nums = new ArrayList<>();int sumLeft=0,sumRight=0;Scanner scan =new Scanner(System.in);while (scan.hasNextInt()){nums.add(scan.nextInt());}int numsSize=nums.size()-1;for(int i=1;i<numsSize;i++){for(int j=0;j<i;j++){sumLeft+=nums.get(j);}for(int j=numsSize;j>i;j--){sumRight+=nums.get(j);}if(sumLeft==sumRight){System.out.println(i);break;}else {sumLeft=sumRight=0;}}if(sumLeft==0){System.out.println(-1);}}
}

做完之后搜一下别人的答案。。。果然被吊打。

解题思路:

参考博客园

左累加没必要从0号索引开始,之前的累加加上下一号索引即可。右累加完全可以算一次总和减去左累加即可。

参考:判断中心索引条件

左侧索引如果和右侧相等,即二倍加左侧累加和+中心索引=总和

java:

class Solution {public int pivotIndex(int[] nums) {int sumLeft=0,sum=0;for (int n:nums){sum = sum + n;}int numsSize=nums.length-1;for(int i=0;i<=numsSize;i++){if(i==0){sumLeft=0;}else{sumLeft+=nums[i-1];}//左侧索引如果和右侧相等,即二倍左侧加中心索引=总和if(sumLeft*2+nums[i]==sum){return i;}}return -1;}
}

特别说明一下,索引一定要从0开始到最后一个止,因为题目后中心索引右侧相加可以为0。

java默认模板里int[] nums指从控制台输入int 数组,不需要Arraylist动态构造数组了。

python3

​ nums即为list动态数组

class Solution:def pivotIndex(self, nums: List[int]) -> int:""":type nums: int"""sumAll=sum(nums)leftSum=0for i in range(len(nums)):if(i==0):leftSum=0else:leftSum+=nums[i-1]#左侧索引如果和右侧相等,即二倍加左侧中心索引=总和if(leftSum*2+nums[i]==sumAll):return ireturn -1

python 寻找数组的中心索引_Leetcode724:寻找数组的中心索引(java、python3)相关推荐

  1. python 寻找数组的中心索引_Leetcode724查找数组Python的中心索引,LeetCode724,寻找,python...

    寻找数组的中心索引 这一次打卡不知道又摸了多久的鱼,周五没做题,周日补上. 题目 给定一个整数类型的数组 nums,请编写一个能够返回数组"中心索引"的方法. 我们是这样定义数组中 ...

  2. 724寻找数组中心索引之Leecode—数组篇(前缀法)

    寻找数组中心索引 链接:https://leetcode-cn.com/problems/find-pivot-index/ 题目:给你一个整数数组 nums,请编写一个能够返回数组 "中心 ...

  3. python高维数据的读取_索引访问高维数组_Python数据分析与科学计算基础篇1:NumPy图解,使抽象的数据具象为可触摸的图形_深度学习视频-51CTO学院...

    购买本课程所在专题<Python数据分析师:0基础到数据分析达人>https://edu.51cto.com/topic/2570.html,赠送一本"Python相关图书&qu ...

  4. Python中Youki使用索引快速为数组或矩阵赋值的技巧

    1 前言 Python的索引真的很强大,不愧是科学计算第一语言.但是我还是更喜欢Java呀!哈哈哈~ 希望Java未来也可以支持索引数组~ 2 Youki使用索引快速为数组或矩阵赋值的技巧 2.1 构 ...

  5. python 数组排序索引_python对数组进行排序,并输出排序后对应的索引值方式

    python对数组进行排序,并输出排序后对应的索引值方式 废话不多说,直接上代码吧! # -*- coding: cp936 -*- import numpy as np #一维数组排序 arr = ...

  6. Python:实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)

    Python:实现hill climbing爬山法用来寻找函数的最大值算法 import mathclass SearchProblem:def __init__(self, x: int, y: i ...

  7. python 输出元素索引(一维数组、字符串、二维数组)

    类型一:数组的索引 1.若索引的元素唯一,则利用l.index(target)即可.l为所给数组,target为查找的目标值. l=[1,2,36,89,45,36,11] print(l.index ...

  8. 学习笔记(05):Python数据殿堂:数据分析与数据可视化-花哨的索引,数组的排序,结构化数组...

    立即学习:https://edu.csdn.net/course/play/27352/363912?utm_source=blogtoedu 花销索引:使用数组作为索引 可以快速访问复杂数组的子数据 ...

  9. python numpy array索引_Python NumPy 数组索引

    1.访问数组元素 数组索引与访问数组元素相同. 您可以通过引用其索引号来访问数组元素. NumPy数组中的索引以0开头,这意味着第一个元素的索引为0,第二个元素的索引为1等. 例如: 从以下数组中获取 ...

最新文章

  1. 跨链Cosmos(4)Tendermint Core
  2. vue-router 源码:路由的安装与初始化
  3. 12_Android中HttpClient的应用,doGet,doPost,doHttpClientGet,doHttpClient请求,另外借助第三方框架实现网络连接的应用,
  4. WebStorm 9“神器”变“霸器”
  5. java 控制路由器_停用角度路由器链路
  6. json解析时遇到英文双引号报错解决
  7. steam卡价越来越高,steam搬砖项目还能玩么?
  8. 教师资格考试科目二 word Exele ppt 应用
  9. 【C#】基于System.Speech库实现语音合成与语音识别
  10. 客户体验决胜2022,低代码是快速取胜之道
  11. 根据出生年月日算出实际的月龄
  12. python opencv人脸识别考勤系统的完整源码
  13. 热释红外感应模块(pir d203s)介绍
  14. 安卓开发 之小白养成-Android适配
  15. 反弹shell和键盘记录器实现
  16. 辐射安全管理考试笔记
  17. 【个人笔记】《知了堂》mysql表连接
  18. SSM整合redis
  19. Github css加载失败,样式混乱解决办法
  20. excel2007快捷键

热门文章

  1. Windows10 JDK9安装及配置环境变量与Eclipse安装
  2. 第七届杭州云栖大会召开 阿里云在人工智能领域发力
  3. SNMP之管理信息库
  4. vector机器人 UPDATING YOUR VECTOR ACCOUNT 更新你的 VECTOR 帐户
  5. python3 域名转ip
  6. redis 漏洞利用与防御
  7. docker-compose 简介以及常用命令
  8. 阿里云linux CentOS6.5(nginx+PHP-fpm)及RDS初级使用指南和简单安全设置
  9. 使用TDI与WinSock进行客户端服务器编程
  10. Android点击Button实现功能的几种方法