【LeetCode16】只出现一次的数字 II

640?wx_fmt=png

? 温故而知新

? 今日挑战

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,3,2]输出: 3

示例 2:

输入: [0,1,0,1,0,1,99]输出: 99

先思考一下,后面我会给出一个解题思路~?

【LeetCode16】只出现一次的数字 II_第1张图片

图来自网络

因为这道题目规定了不要用到额外的空间,也就是必须要在O(N)的空间复杂度内完成,这里用到了一个比较机智的办法。

1 )假设 nums = [a,a,a,b,c,c,c]

2 )3倍的元素之和: 3(a+b+c)

3 )原数组之和:3a+b+3c

4 )相减:3(a+b+c)-3a+b+3c=2b

5 )除以2:就是b

Python实现:

# 只出现一次的数字 III
def singleNumber(nums):
    # 初始化一个字典
    hash_table = {}
    for i in nums:
        try:
            # 如果数字已经存在,则从中剔除这个元素
            hash_table.pop(i)
        except:
            # 如果数字不存在,则从中新增这个元素
            hash_table[i] = 1
    return list(hash_table.keys())

? 配图角色背景介绍

本名布鲁斯·班纳(Bruce Banner)是出现在惊奇漫画出版物中的反英雄虚构人物。浩克由斯坦·李(Stan Lee)与杰克·科比(Jack Kirby)所创造,首次出现于《不可思议的浩克》(The Incredible Hulk)第一部第一期(1962年二月);从此成为惊奇漫画旗下最受欢迎的人物之一。物理学家罗柏特布鲁斯·班纳(Robert Bruce Banner)博士在意外受自己制造出的伽玛炸弹(Gamma Bomb)放射线污染后变成了名为浩克的愤怒怪物班纳与浩克两个身分时常造成毁灭性的破坏,因此常成为警方与有关单位追捕的对象。译名也常称浩克为绿巨人,但此译名与实际有一定程度的误差,虽说浩克的皮肤颜色最常见的是绿色,然而在浩克的故事历史中皮肤时常改变颜色,不同颜色的肤色代表了此角色不同的人格,但都是指涉同一个人物。在过去四十年中,浩克几乎与惊奇世界中每一个英雄与反派交战过。浩克曾出现在多部动画影集,一部电视影集《The Incredible Hulk》,以及两部电影:2003年台湾导演李安执导的《绿巨人浩克》(The Hulk),由艾瑞克·巴纳饰演班纳,以及最新的《无敌浩克》(The Incredible Hulk),由路易斯·拉提耶(Louis Leterrier)执导,爱德华·诺顿饰演班纳,已于2008年六月上映 。

超人的力量,速度,精力,耐力,重生治愈能力,可看见灵体,放射线吸收能力,变身,高心灵控制防御力,部份化身具有天才程度智力。力量:其实他的力量会随着愤怒的提升而无限提升。至少有100吨的力量,曾经挺起一个一百五十亿吨的岩石速度:浩克在全速奔跑时速度是接近光速,甚至是超过光速耐力:他的耐力近乎没有极限,重生能力超过金刚狼。几种变身状态下的能力也有不同。

  • 野蛮浩克:此版本的浩克以被攻击后因暴怒而毁灭掉都市或乡下建筑闻名,经常对敌人喊着“浩克出击!”同时这个形态也是曾经被认定为最强形态。按照官方的说法,他的力量近乎无限,只要绿巨人越愤怒,就会变得越强大。

  • 失心浩克:此一版本的浩克与其它版本外型迥异,失心浩克出自于班纳对自己分身最深层的恐惧。梦魇不断的增加自己对班纳的影响力,让此一黑暗的分身逐渐成形浮现。当班纳终于崩溃时,失心浩克成为了一个独立的人格,挣脱了班纳的控制。最后在班纳潜意识所创造出来的三个生物的帮助下,失心浩克获得了说话的能力,且行为逐渐较不残暴。从此之后这个人格就没有在出现过,很可能已经不再是班纳多重人格的一部份。

  • 灰浩克:灰浩克虽是体型最小的浩克版本,他仍然比常人高大许多。基本力量是所有主要浩克版本中最低的一个,不过他的的力量等级可随愤怒而增加,但比起其它版本的浩克,增加的幅度缓慢许多。虽然他的力量较低,但灰浩克会利用对手以为面对的是野蛮浩克这点,而藉机智与战略取得优势。

  • 合体浩克:合体浩克有着班纳、野蛮浩克,以及灰浩克的个性特质(并拥有班纳的智力、灰浩克的狡猾,以及野蛮浩克的体型与力量),但教授并没有这些特质。合体浩克是超级英雄团体神战队(Pantheon)的成员与队长。虽然他有着极度壮硕的身体,但合体浩克却有着一张接近布鲁斯·班纳的正常脸孔,笔直的身形让他成为最高,且最不像野人的一个浩克版本。

  • 恶魔浩克:恶魔浩克是浩克的敌人,威胁将逃出班纳内心的束缚,并毁灭这个不断折磨虐待他的世界。后来恶魔浩克被解释为由梦魇创造出来的幻想。

  • 绿殇:绿殇浩克的愤怒是最集中的。此浩克的耐力极高,可以承受黑闪电(Black Bolt)的音波,但过去的野蛮浩克则不行。依据蜘蛛侠的说法,绿殇浩克是他所知第二强大的超级英雄,但又在随后剧情他就把号称第一强大的英雄哨兵打倒。绿殇浩克受过的训练包括厚剑、长矛以及战盾,且是有为的领导与战略家。此时的浩克是布鲁斯·班纳的人格与智慧

你可能感兴趣的:(【LeetCode16】只出现一次的数字 II)