寻找数组的中心索引

给你一个整数数组 nums ,请计算数组的 中心下标 。

数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。

如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。

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

优化后:

class Solution {public int pivotIndex(int[] nums) {int sum  = 0;for(int i = 0;i<nums.length;i++){sum += nums[i];}int sum_right = sum;for(int j = 0;j<nums.length;j++){sum_right = sum_right - nums[j];if((sum-nums[j])==sum_right*2){//如果j是中心点,那么左边和等于右边和,那么总和sum-nums[j]是sum_right的2倍return j;}}return -1;}
}

在这里插入图片描述

或者这样写

class Solution {public int pivotIndex(int[] nums) {int sum  = 0;for(int i = 0;i<nums.length;i++){sum += nums[i];}int sum_right = sum;int sum_left = 0;for(int j = 0;j<nums.length;j++){sum_right = sum_right - nums[j];if(sum_left==sum_right){return j;}sum_left += nums[j];}return -1;}
}

在这里插入图片描述

优化前:

class Solution {public int pivotIndex(int[] nums) {for(int i = 0;i<nums.length;i++){int sumL = 0,sumR = 0;for(int j = 0;j<i;j++){sumL = sumL + nums[j];//左边的和}for(int k = nums.length-1;k>i;k--){sumR = sumR + nums[k];//右边的和}if(sumL==sumR){return i;}}return -1;}
}

时间复杂度O(n^2)
在这里插入图片描述

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

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

相关文章

STL sector 应用

1 #include <iostream>2 #include <string>3 #include <vector>4 #include <cstdio>5 using namespace std;6 int n;7 vector<int> pile[30];8 9 //找到a所在pile和height&#xff0c;以应用的形式返回调用者&#xff0c; 10 void find_block(in…

将Jersey与Spring整合

Spring提供了很多好处&#xff0c;并通过其依赖项注入机制&#xff0c;应用程序生命周期管理和Hibernate支持&#xff08;仅举几例&#xff09;促进了最佳实践。 另外&#xff0c;当您想拥有干净的类似于REST的服务器端JSON Api时&#xff0c;我发现Jersey非常方便。 本文简要介…

JAVAWEB 生成excel文字在一格显示两位不变成#号

在用java生成excel的时候会发现这种问题&#xff0c; 如果是人家给的模板还好&#xff0c;如果不是模板&#xff0c;而是通过代码生成的话&#xff0c; 就需要进行处理了&#xff0c; 一个小单元格&#xff0c;如果是一位的话&#xff0c;如1-9显示没有问题&#xff0c;一旦是两…

力扣面试题 01.07. 旋转矩阵

给你一幅由 N N 矩阵表示的图像&#xff0c;其中每个像素的大小为 4 字节。请你设计一种算法&#xff0c;将图像旋转 90 度。 不占用额外内存空间能否做到&#xff1f; 代码一 思路&#xff1a;对于矩阵中第 ii 行的第 jj 个元素&#xff0c;在旋转后&#xff0c;它出现在倒数…

依赖注入–手动方式

依赖注入是一种将行为与依赖解决方案分开的技术。 用简单的话来说&#xff0c;它允许开发人员定义具有特定功能的类&#xff0c;这些功能取决于各种协作者&#xff0c;而不必定义如何获取对这些协作者的引用。 以此方式&#xff0c;实现了各个组件之间的解耦&#xff0c;并且通…

一个疏忽引发的思考!(strerror)

前几天写代码因为自己的疏忽导致一遍又一遍的Segmentation fault (core dumped)。该问题是因为strerror&#xff08;errno&#xff09;返回的指针指向非法的内存导致程序打印错误时崩溃。 尝试数次无果&#xff0c;为了进度。简单粗暴的换成了perror(str)。今天忙里偷闲&#x…

力扣面试题 01.08. 零矩阵

编写一种算法&#xff0c;若M N矩阵中某个元素为0&#xff0c;则将其所在的行与列清零 代码一思路&#xff1a; 第一次遍历时记录&#xff0c;用两个布尔类型数组标记行和列中是否有0元素&#xff1b; 第二次遍历时置零 class Solution {public void setZeroes(int[][] matr…

Java最佳实践–字符串性能和精确字符串匹配

在使用Java编程语言时&#xff0c;我们将继续讨论与建议的实践有关的系列文章&#xff0c;我们将讨论String性能调优。 我们将专注于如何有效地处理字符串创建&#xff0c; 字符串更改和字符串匹配操作。 此外&#xff0c;我们将提供我们自己的用于精确字符串匹配的最常用算法的…

mac下开发环境常用操作与命令

【1】 修改hosts文件 vim /private/etc/hosts转载于:https://www.cnblogs.com/zsmynl/p/4714492.html

keil里面填数据

编译后寄存器和堆栈的内存数据可以直接写进去的。 寄存器&#xff0c;双击就可以&#xff0c;注意里面是十六进制 堆栈&#xff0c;也是十六进制&#xff0c;八位的 00 00 00 00 &#xff0c;但这个是从右到左的&#xff0c;比如0x00000006 应该填 06 00 00 00 把数据取出来 取…

力扣498. 对角线遍历

给你一个大小为 m x n 的矩阵 mat &#xff0c;请以对角线遍历的顺序&#xff0c;用一个数组返回这个矩阵中的所有元素。 代码思路&#xff1a;以第一行和右边最后一列作为每轮的开始元素&#xff0c;先用temp存储&#xff0c;全部按 从左上到右下 的顺序遍历&#xff0c;但是…

调试生产服务器– Eclipse和JBoss展示

您是否编写有错误的代码&#xff1f; 不&#xff0c;当然不。 对于我们其余的确实会编写带有错误的代码的凡人&#xff0c;我想解决一个非常敏感的问题&#xff1a;调试在生产服务器上运行的应用程序。 因此&#xff0c;您的应用程序已准备好进行部署。 单元测试全部成功&…

ubuntu server获取并自动设置最快镜像的方法

一&#xff0c;安装方法1 add-apt-repository ppa:ossug-hychen/getfastmirrorapt-get install getfastmirror 如果添加了临时源&#xff0c;这样移除add-apt-repository --remove ppa:ossug-hychen/getfastmirror 二&#xff0c;安装方法2 wget -O getfastmirror-master.zip h…

linux之x86裁剪移植---ffmpeg的H264解码显示(420、422)

在虚拟机上yuv420可以正常显示 &#xff0c;而945&#xff08;D525&#xff09;模块上却无法显示 &#xff0c;后来验证了directdraw的yuv420也无法显示 &#xff0c;由此怀疑显卡不支持 &#xff0c;后把420转换为422显示。420显示如下&#xff1a;/* 编译命令&#xff1a;arm…

Spring依赖注入技术的发展

回顾Spring框架的历史&#xff0c;您会发现实现依赖注入的方式在每个发行版中都在增加。 如果您使用该框架已经超过一个月&#xff0c;那么在这篇回顾性文章中可能不会发现任何有趣的东西。 除了Scala中的最后一个示例&#xff0c;没有其他希望&#xff0c;这种语言在Spring中意…

JS encode decode

网上查到的全都是escape&#xff0c;和需要的编码不是一回事&#xff0c;好不容易找到的结果 保存下来以备以后使用js对文字进行编码涉及3个函数&#xff1a;escape,encodeURI,encodeURIComponent&#xff0c;相应3个解码函数&#xff1a;unescape,decodeURI,decodeURIComponen…

流媒体服务器 笔记

1.sip服务器回SBC Port Unreachable 说明转码器接收RTCP的端口没有打开 转载于:https://www.cnblogs.com/luoyinjie/p/7219359.html

力扣151. 翻转字符串里的单词

给你一个字符串 s &#xff0c;逐个翻转字符串中的所有 单词 。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。 没思路&#xff0c;看到的官方给的&#xff0c;简洁明了&…

Spring 3 HornetQ 2.1集成教程

通过Spring框架使用JBoss的新超高性能消息传递系统。 HornetQ是一个开放源代码项目&#xff0c;用于构建多协议&#xff0c;可嵌入&#xff0c;非常高性能的集群异步消息传递系统。 它是用Java编写的&#xff0c;并且可以在具有Java 5或更高版本运行时的任何平台上运行。 Horn…

B/S和C/S架构图解

软件&#xff1a;B/S和C/S两种架构模式。接下来用三张图片解释&#xff0c;什么是B/S什么是C/S。 图片一&#xff1a;软件架构模式 图片二&#xff1a;C/S结构模式 图片三&#xff1a;B/S结构模式 相信图解胜过冗长文字的解释&#xff0c;什么是B/S什么是C/S一目了然。 转载于:…