No.0006-CareerCup

A zero-indexed array A consisting of N integers is given. An equilibrium index of this array is any integer P such that 0 <=p < N and the sum of elements of lower indices is equal to the sum of elements of higher indices, i.e. A[0] + A[1] + ... + A[P-1] = A[P+1] + ... + A[N-2] + A[N-1]. Sum of zero elements is assumed to be equal to 0. This can happen if P = 0 or P = N-1.
Write a function: int solution(int A[], int N):
that, given a zero-indexed array A consisting of N integers, returns any of its equilibrium indices(just one is enough). Return -1 if no equilibrium index exists. Assume N>=0, integer in A will not overflow.
给出一个N个元素的序号从0开始的数组,定义e-index,在这个index之前的元素之和与在这个index之后的元素之和相等。假如没有元素,按0处理。要求写出该函数,给出数组A[]和整数N,返回任意一个e-index。

1. 询问

这道题的信息已经非常充分了,基本没什么好问的。

2. 分析

直接做法

一个非常直接的做法就是,遍历每个元素,然后求其之前和之后的和,比较。这个方法有一个问题,就是求和的复杂度是O(n)。因此整体复杂度是O(n^2)。

如何改进

问题很明显在求和的方式上。因为是一个个元素遍历过去的,每次只改变一个元素,因此没有必要全部重新求和。可以维持两个和,pre和suf,代表之前和之后的元素和,每经过一个元素,pre就把该元素加入,suf就减去该元素。很明显,初始时pre=0,suf=sum(A) - A[0]。然后对于A[0],先进行判断pre==suf,之后pre加上A[0]的值,但是suf本来就不包含A[0],因此是要减去A[1]的值。因此pre+=A[i],suf-=A[i+1]。然后注意边界条件,pre不能包含A[N-1]。
这样,时间复杂度降低为O(n),空间复杂度为O(1)。

3. 代码

class Solution:
    def solution(self, A, N):
        if not N:
            return -1
        pre, suf = 0, sum(A) - A[0]
        for i in range(N):
            if pre == suf:
                return i
            if i < N - 1:
                pre += A[i]
            if i + 1 < N:
                suf -= A[i + 1]
        return -1

4. 总结

谷歌coding sample的demo问题。Easy难度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,158评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,600评论 1 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,785评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,655评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,075评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,002评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,146评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,918评论 0 211
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,671评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,838评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,318评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,636评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,343评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,187评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,982评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,126评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,934评论 2 279

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,663评论 0 33
  • 微信作为目前最为流行的聊天及微营销工具,拥有众多的使用用户,也深受大家的喜爱。微信号里少则几十个好友,多则成百上千...
    一个人一人阅读 7,425评论 6 5
  • 0.新零售的本质还是成本、效率、体验。 1.新零售科技是关键 2.为什么要做新零售? 线上增长乏力,线下被击破。两...
    榆木石头阅读 192评论 0 0
  • 春天来了 最想做的事情是窝在阳光弥撒的沙发上睡大觉,在厚厚的棉被里把自己蜷成尽可能小的一团,在淡淡的清新的棉...
    洪婷舒阅读 241评论 0 0
  • 期中家长会 2013年5月11 周一忙着拔河比赛,周二忙着主备课一整个单元,周三忙着印班主任培训资料,周四忙着家长...
    夏花静秋阅读 391评论 0 3