美文网首页
2020-03-11 刷题1(数组)

2020-03-11 刷题1(数组)

作者: nowherespyfly | 来源:发表于2020-03-12 12:54 被阅读0次

1013 将数组分成和相等的三个部分

因为题目给了提示:


因为50000(-10^4) <= sum <= 5000010^4,不会溢出,所以可以放心求和除以3.
class Solution {
public:
    bool canThreePartsEqualSum(vector<int>& A) {
        int s = 0;
        if(A.size() < 3) return false;
        for(int i = 0; i < A.size(); i++)
            s += A[i];
        if(s % 3) return false;
        s = s / 3;
        int i = 1, si = A[0];
        while(si != s && i < A.size()){
            si += A[i++];
        }
        if(si != s) return false;
        si = A[i++];
        while(si != s && i < A.size() - 1){
            si += A[i++];
        }
        if(si != s) return false;
        return true;
    }
};

几个可能出的问题:1)循环退出条件是求和等于s/3或者i越界,开始忽略了元素可能有负数,设成求和小于等于s/3了;2)先加上最新的元素,再判断是不是与s/3相等,因为有可能s/3就是等于0;第二次求和的退出条件是i < A.size() - 1,因为最后一组至少要有一个元素。

相关文章

  • 2020-03-11 刷题1(数组)

    1013 将数组分成和相等的三个部分 因为题目给了提示: 因为50000 10^4,不会溢出,所以可以放心求和除以...

  • [数组]442. Find All Duplicates in

    标签(空格分隔): 数组 leetcode 刷题 题目链接 给定一个数组,1≤a[i]≤n(n =数组的大小),里...

  • 刷题-数组专项

    数组 二维数组中的查找题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每...

  • leetcode刷题之数组

    leetcode刷题,使用python 1, 两数之和—— 0001 数组给定一个整数数组 nums 和一个整数...

  • 线段树(Segment Tree)和树状数组(Fenwick T

    前言 在刷题过程中,经常会遇到求数组某区间之和的问题:给出数组a[0...n-1],求数组下标i~j的元素之和a[...

  • 构建乘积数组

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:数组 题目描述: 给定一个数组A[0,1,...,n...

  • 大厂算法与数据结构刷题(二)

    大厂算法与数据结构刷题(二) 题目1 给定数组hard和money,长度都为N 数组hard[i]表示i号工作的...

  • leecode刷题(1)-- 删除排序数组中的重复项

    leecode刷题(1)-- 删除排序数组中的重复项 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重...

  • 2019-12-17 刷题-1(数组)

    26 删除排序数组中的重复项 题目很简单,设置一个指针指向删除后数组结尾。需要注意判断数组为空的情况,否则会run...

  • LeetCode 刷题笔记1 (方法和数组)

    有言在先 1.懵逼的时候怎么办 暴力破解? 从最基本问题开始解决,然后向后思考找最近重复子问题,泛化(递归?动态规...

网友评论

      本文标题:2020-03-11 刷题1(数组)

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