python 寻找数组的中心索引_Leetcode724:寻找数组的中心索引(java、python3)
寻找数组的中心索引
给定一个整数类型的数组 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)相关推荐
- python 寻找数组的中心索引_Leetcode724查找数组Python的中心索引,LeetCode724,寻找,python...
寻找数组的中心索引 这一次打卡不知道又摸了多久的鱼,周五没做题,周日补上. 题目 给定一个整数类型的数组 nums,请编写一个能够返回数组"中心索引"的方法. 我们是这样定义数组中 ...
- 724寻找数组中心索引之Leecode—数组篇(前缀法)
寻找数组中心索引 链接:https://leetcode-cn.com/problems/find-pivot-index/ 题目:给你一个整数数组 nums,请编写一个能够返回数组 "中心 ...
- python高维数据的读取_索引访问高维数组_Python数据分析与科学计算基础篇1:NumPy图解,使抽象的数据具象为可触摸的图形_深度学习视频-51CTO学院...
购买本课程所在专题<Python数据分析师:0基础到数据分析达人>https://edu.51cto.com/topic/2570.html,赠送一本"Python相关图书&qu ...
- Python中Youki使用索引快速为数组或矩阵赋值的技巧
1 前言 Python的索引真的很强大,不愧是科学计算第一语言.但是我还是更喜欢Java呀!哈哈哈~ 希望Java未来也可以支持索引数组~ 2 Youki使用索引快速为数组或矩阵赋值的技巧 2.1 构 ...
- python 数组排序索引_python对数组进行排序,并输出排序后对应的索引值方式
python对数组进行排序,并输出排序后对应的索引值方式 废话不多说,直接上代码吧! # -*- coding: cp936 -*- import numpy as np #一维数组排序 arr = ...
- Python:实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)
Python:实现hill climbing爬山法用来寻找函数的最大值算法 import mathclass SearchProblem:def __init__(self, x: int, y: i ...
- python 输出元素索引(一维数组、字符串、二维数组)
类型一:数组的索引 1.若索引的元素唯一,则利用l.index(target)即可.l为所给数组,target为查找的目标值. l=[1,2,36,89,45,36,11] print(l.index ...
- 学习笔记(05):Python数据殿堂:数据分析与数据可视化-花哨的索引,数组的排序,结构化数组...
立即学习:https://edu.csdn.net/course/play/27352/363912?utm_source=blogtoedu 花销索引:使用数组作为索引 可以快速访问复杂数组的子数据 ...
- python numpy array索引_Python NumPy 数组索引
1.访问数组元素 数组索引与访问数组元素相同. 您可以通过引用其索引号来访问数组元素. NumPy数组中的索引以0开头,这意味着第一个元素的索引为0,第二个元素的索引为1等. 例如: 从以下数组中获取 ...
最新文章
- 跨链Cosmos(4)Tendermint Core
- vue-router 源码:路由的安装与初始化
- 12_Android中HttpClient的应用,doGet,doPost,doHttpClientGet,doHttpClient请求,另外借助第三方框架实现网络连接的应用,
- WebStorm 9“神器”变“霸器”
- java 控制路由器_停用角度路由器链路
- json解析时遇到英文双引号报错解决
- steam卡价越来越高,steam搬砖项目还能玩么?
- 教师资格考试科目二 word Exele ppt 应用
- 【C#】基于System.Speech库实现语音合成与语音识别
- 客户体验决胜2022,低代码是快速取胜之道
- 根据出生年月日算出实际的月龄
- python opencv人脸识别考勤系统的完整源码
- 热释红外感应模块(pir d203s)介绍
- 安卓开发 之小白养成-Android适配
- 反弹shell和键盘记录器实现
- 辐射安全管理考试笔记
- 【个人笔记】《知了堂》mysql表连接
- SSM整合redis
- Github css加载失败,样式混乱解决办法
- excel2007快捷键