class Solution(object):
def canThreePartsEqualSum(self, A: 'List[int]') -> bool:
n = len(A)
sums = sum(A)
if sums % 3 != 0:
return False
target = sums // 3 leftpart = 0
leftboundary = n -1
for i in range(n-2):
leftpart += A[i]
if leftpart == target:
leftboundary = i
break rightpart = 0
rightboundary = 0
for j in range(n-1,1,-1):
rightpart += A[j]
if rightpart == target:
rightboundary = j
break if leftboundary < rightboundary:
return True
return False

先判断数组之和是否是3的倍数,如果不是,那么不能三等分。

如果可以,先确定1/3的值,保存在变量target中。

从左向右逐项相加,找到第一组等于target的值的索引,记为i。

从右向左逐项相加,找到第一组等于target的值的索引,记为j。

如果i<j,则可以三等分。

时间复杂度O(n)(三次遍历),64ms,17.4MB。

leetcode1013的更多相关文章

  1. [Swift]LeetCode1013. 将数组分成和相等的三个部分 | Partition Array Into Three Parts With Equal Sum

    Given an array A of integers, return true if and only if we can partition the array into three non-e ...

随机推荐

  1. Linux Bash on Win10 (WSL)在cmder下使用vim时方向键失灵问题解决

    更改方法 由于cmder和bash.exe不兼容,如果你直接输入bash ~,那么进入子系统后将无法使用方向键和Home/PageUp/PageDown等键都无法使用,网上常见的cmder配置过程如下 ...

  2. WARNING: Package of target [javax.servlet.jsp.jstl.core.LoopTagSupport$1Status@7439e436] or package of member [public int javax.servlet.jsp.jstl.core.LoopTagSupport$1Status.getIndex()] are excluded!

    Struts2爆出045漏洞后,将struts版本升级到了2.3.32.但是在验证时发现有些jstl循环未出现预期的结果. debug发现,数据没有问题,断定是前端页面显示出了问题.根据日志信息WAR ...

  3. vue中mounted中无法获取到dom元素

    一.解决方案: 加上异步setTimeout,延迟获取dom的代码的执行 mounted() { // debugger this.$nextTick(()=> { setTimeout(()= ...

  4. view之自定义控件

    转载自:http://blog.163.com/ppy2790@126/blog/static/103242241201382210910473/ 开发自定义控件的步骤: 1.了解View的工作原理  ...

  5. 阿里云直播服务 sdk demo php

    [php] <?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/12/8 0008 * Time: 11:05 ...

  6. window.open打开新窗口报错ie 位指明错误,原因是window没有加引号!

    function JsMod(htmlurl,tmpWidth,tmpHeight){ htmlurl=getRandomUrl(htmlurl); var newwin = window.open( ...

  7. 04-spark streaming

    1.基本概念(了解) ①流(Streaming): 是一种数据传送技术,它把客户机收到的数据变成一个稳定连续的流,源源不断地送出,使用户听到的声音或看到的图象十分平稳, 而且用户在整个文件送完之前就可 ...

  8. MySQL提供了以下三种方法用于获取数据库对象的元数据

    MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_SCHEMA数据库里查询相关表 3)命令行程序,如mysqlshow, mysqldump 用 ...

  9. Ajax总结一下

    一.什么是Ajax Ajax(Asynchronous JavaScript and XML),可以理解为JavaScript执行异步网络请求.通俗的理解的话就是,如果没有Ajax技术,改变网页的一小 ...

  10. StanFord ML 笔记 第八部分

    第八部分内容:  1.正则化Regularization 2.在线学习(Online Learning) 3.ML 经验 1.正则化Regularization 1.1通俗解释 引用知乎作者:刑无刀 ...