博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LC_寻找数组的中心索引
阅读量:3897 次
发布时间:2019-05-23

本文共 955 字,大约阅读时间需要 3 分钟。

LC_寻找数组的中心索引

题目 ( 源自LeetCode ):

给一个 nums的整数数组,其中心下标定义为:左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心下标,返回 -1 。如果数组有多个中心下标,应该返回最靠近左边的那一个。

思路

说实话,做这道题的时候,其实最开始是有点懵逼(原谅我很菜,但是不解决会更菜,希望大家加油)。

  • 根据中心索引的定义,可以将整个数组分为三个部分:

    • 左侧元素的和:leftSum
    • 中心索引: indexNum
    • 右侧元素和: rightSum
  • 步骤:

    1. 先求出整个数组的和

      int sum = 0;for(int element : nums){
      sum +=element;}
    2. 用for循环遍历数组,依次求出 leftSum ( 这也叫做求前缀和 )

      int leftSum = 0;for(int i = 0; i< nums.length-1; i++){
      leftSum += nums[i];}
    3. 那我们设想,中心索引存在

      leftSum = sum - rightSum -indexNum

      中心索引存在的同时: leftSum = rightSum。

      leftSum = sum - leftSum -indexNum

最终代码:

public static int getCentralIndex(int[] nums) {
// 求整个数组的和 int sum = 0; for (int element : nums) {
sum += element; } // 依次求前缀和,并且判断是否有中心索引 int leftSum =0; for (int i = 0; i < nums.length; i++) {
// 判断中心索引是否成立 if (leftSum == sum - leftSum - nums[i]) {
return i; } leftSum += nums[i]; } return -1;}

测试代码

测试代码截图

结果:

测试结果

转载地址:http://whuen.baihongyu.com/

你可能感兴趣的文章
为窗口添加鼠标HOVER和LEAVE事件
查看>>
VC小技巧20个
查看>>
MFC Feature Pack for Visual C++ 2008的BUG之一
查看>>
POJ - 2739 Sum of Consecutive Prime Numbers
查看>>
STL map映照容器(一)map创建、元素插入、元素删除和遍历访问
查看>>
Leetcode - 557反转字符串中的单词III
查看>>
Leetcode - 160相交链表
查看>>
Leetcode - 11盛最多水的容器
查看>>
Leetcode - 141环形链表
查看>>
Leetcode - 14最长公共前缀
查看>>
Leetcode - 7整数反转
查看>>
PAT---B1022. D进制的A+B (20)
查看>>
PAT---B1037. 在霍格沃茨找零钱(20)
查看>>
PAT---A1019. General Palindromic Number (20)
查看>>
PAT---A1027. Colors in Mars (20)
查看>>
PAT---1058. A+B in Hogwarts (20)
查看>>
PAT---A1001. A+B Format (20)
查看>>
PAT---A1005. Spell It Right (20)
查看>>
PAT---A1035. Password (20)
查看>>
PAT---A1077. Kuchiguse (20)
查看>>