牛客网在线编程专题《剑指offer-面试题40》数组中只出现一次的数字

我的个人微信公众号:Microstrong

微信公众号ID:MicrostrongAI

微信公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的读书笔记!期待您的关注,欢迎一起学习交流进步!

知乎主页:https://www.zhihu.com/people/MicrostrongAI/activities

Github:https://github.com/Microstrong0305

个人博客:https://blog.csdn.net/program_developer

 题目链接:

https://www.nowcoder.com/practice/e02fdb54d7524710a7d664d082bb7811?tpId=13&tqId=11193&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述:

 解题思路:

(1)以空间复杂度换时间复杂度

空间复杂度O(n),时间复杂度O(n)

已经AC的代码:

# -*- coding:utf-8 -*-
class Solution:
    # 返回[a,b] 其中ab是出现一次的两个数字
    def FindNumsAppearOnce(self, array):
        # write code here
        num_dic = {}
        result_list = []
        for item in array:
            if item in num_dic.keys():
                num_dic[item] = num_dic[item] + 1
            else:
                num_dic[item] = 1

        for item, count in num_dic.items():
            if count == 1:
                result_list.append(item)

        return result_list


if __name__ == "__main__":
    input_array = [2, 4, 3, 6, 3, 2, 5, 5]
    sol = Solution()
    print(sol.FindNumsAppearOnce(input_array))

(2)利用Python中list.count()函数,时间复杂度为o(n)

# -*- coding:utf-8 -*-
class Solution:
    # 返回[a,b] 其中ab是出现一次的两个数字
    def FindNumsAppearOnce(self, array):
        # write code here
        result_list = []
        for item in array:
            count = array.count(item)
            if count == 1:
                result_list.append(item)

        return result_list

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章