zoukankan      html  css  js  c++  java
  • 2021/1/28 寻找数组的中心索引 收获:一颗星

    2021/1/28 寻找数组的中心索引

    题干:

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

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

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

    注意:中心索引可能出现在数组的两端。

    来源:力扣(LeetCode)

    链接:https://leetcode-cn.com/problems/find-pivot-index

    链接:https://leetcode-cn.com/problems/find-pivot-index/solution/xun-zhao-shu-zu-de-zhong-xin-suo-yin-by-gzjle/

    我的解题代码:

    class Solution {
            public int pivotIndex(int[] nums) {
                int total = 0;
                int sum = 0;
                for(int i=0;i<nums.length;i++){
                    total+=nums[i];
                }
                for(int i=0;i<nums.length;i++) {
                    if(2*sum+nums[i]==total) {
                        return i;
                    }else{
                        sum+=nums[i];
                    }
                }
               
                return -1;
            }
        }

    官方代码:

    class Solution {
        public int pivotIndex(int[] nums) {
            int total = Arrays.stream(nums).sum();
            int sum = 0;
            for (int i = 0; i < nums.length; ++i) {
                if (2 * sum + nums[i] == total) {
                    return i;
                }
                sum += nums[i];
            }
            return -1;
        }
    }

     不一样的原因:

    官方使用了Arrays.stream(nums).sum()的方式来计算total,而不是用for循环

    收获:

    当涉及到多个变量时(例如左边的和、右边的和),我们可以看看变量之间是否有联系,本题就是左右两边之和再加上分割的那个数,即为total(感觉类似数学遇到多个变量时的解决方式,那就是统一变量)

  • 相关阅读:
    辗转相除法
    并查集(详)
    LCA 最近公共祖先
    RMQ ST表 静态区间最大值
    manacher
    题解 CF33B String Problem
    Linux 下对拍程序
    CSP 考试注意事项
    题解 P4688 [Ynoi2016]掉进兔子洞
    CSP 2020 游记
  • 原文地址:https://www.cnblogs.com/mmimo/p/14342393.html
Copyright © 2011-2022 走看看