【python】找出数组中出现奇数次的数?

题目:数组中有N+2个数,其中,N个数出现了偶数次,2个数出现了奇数次(这两个数不相等),请用O(1)的空间复杂度,找出这两个数。注:不需要知具体位置,只需找出这两个数。

分析:哈希表法。定义一个字典,把数组元素的值作为key,遍历整个数组,如果key值不存在,出现一次其值为1,出现两次其值为2。

def getNum(arr):

    if arr is None or len(arr) <= 0:

        return -1

    hashTable = {}

    i = 0

    while i < len(arr):

        if arr[i] in hashTable:

            hashTable[arr[i]] = 2

        else:

            hashTable[arr[i]] = 1

        i += 1

    for k, v in hashTable.items():

        if v == 1:

            print(int(k))

if __name__ == "__main__":

    arr = [3, 3, 5, 6, 8, 6, 5, 7, 7, 2, 2, 1]

    getNum(arr)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容