• 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(感觉类似数学遇到多个变量时的解决方式,那就是统一变量)

  • 相关阅读:
    poj 1511Invitation Cards
    hust 1608Dating With Girls
    sdibt 2128Problem A:Convolution Codes
    hdu 1325Is It A Tree?
    poj 2240Arbitrage
    hdu 2818Building Block
    poj 1789Truck History
    poj 1125Stockbroker Grapevine
    展望未来
    告别过去
  • 原文地址:https://www.cnblogs.com/mmimo/p/14342393.html
Copyright © 2020-2023  润新知