美文网首页弋枝的LeetCode练习本
(LeetCode#724) Find Pivot Index

(LeetCode#724) Find Pivot Index

作者: 弋枝 | 来源:发表于2018-08-31 15:54 被阅读0次

    题目:

    Given an array of integers nums, write a method that returns the "pivot" index of this array.
    We define the pivot index as the index where the sum of the numbers to the left of the index is equal to the sum of the numbers to the right of the index.
    If no such index exists, we should return -1. If there are multiple pivot indexes, you should return the left-most pivot index.

    给定一个整型数组,找到它的“中心点”的位置。中心点定义为:在它左边的数字之和等于在它右边的数字之和。如果没有这样的中心点,返回-1;如果存在多个则返回最左一个。
    (在提交时发现题目里没有提到的一个设定:如果这个点在首位,认为它的左边之和为0;同理,如果这个点在末位,认为它的右边之和为0)

    解:

    从0开始寻找点的位置。在每个位置计算左右两边数字之和,判断是否相等,是则返回这个位置,否则位置+1。循环直到找到两边相等的位置或右移到达末尾。

    class Solution {
    public:
        int pivotIndex(vector<int>& nums) {
            if (nums.size()<1) return -1;
            if (nums.size()==1) return 0;
            int leftSum,rightSum,pivot;
            for(pivot=0;pivot<nums.size();pivot++)
            {
                leftSum=rightSum=0;
                for(int i=0;i<pivot;i++) leftSum+=nums[i];
                for(int i=int(nums.size()-1);i>pivot;i--) rightSum+=nums[i];
                if(leftSum==rightSum) return pivot;
            }
            return -1;
        }
    };
    

    09.04 update :

    循环有点多,导致很慢。改一下计算和的方式:先计算这个数组所有的和,这样在每个点就只需要累加leftSum。

    class Solution {
    public:
            int pivotIndex(vector<int>& nums) {
            if (nums.size()<1) return -1;
            if (nums.size()==1) return 0;
            int leftSum=0;
            int pivot;
            int sum=0;
            for(int i=0;i<nums.size();i++) sum+=nums[i];
            for(pivot=0;pivot<nums.size();pivot++)
            {  
                if(leftSum==(sum-nums[pivot]-leftSum)) return pivot;
                leftSum += nums[pivot];
            }
            return -1;
        }
    };
    

    这样快了一些。

    相关文章

      网友评论

        本文标题:(LeetCode#724) Find Pivot Index

        本文链接:https://www.haomeiwen.com/subject/wcaswftx.html