zoukankan      html  css  js  c++  java
  • 求解整数集合的交集(腾讯笔试)

    问题描述:

    A,B两个整数集合,设计一个算法求他们的交集,尽可能高效。

    问题分析:

    用哈希表,遍历集合A,构造一个哈希表,在遍历集合B,从哈希表中查询,如果存在即保存该元素。

    时间复杂度O(n+m) (n,m分别是A,B集合长度)

    Python求解查找出现一次字符问题(2016奇虎笔试题)

    Python实现(用到了内置函数字典dict) 

    def combine(li1,li2):
        d = dict()
        for ch in li1:
            d[ch] = d.get(ch,1)
        chs = [c for c in li2 if d.get(c) != None]        
        return chs

    测试样例:

    l1 = [1,2,3,4,5,9,8]
    l2 = [2,3,7,8,9,10]
    print(combine(l1,l2))

    输出结果:

    [2, 3, 8, 9]

    下面是2016奇虎笔试题,用的是相同方法(字典dict)解决

    题目描述:

    在给定的字符串,找出其中只出现一次的字符,如果有多个这样的字符,就全部找出来

    注意字典dict()的get用法

    Python实现

    def search(s):
        d = dict()
        for ch in s:
        #如果这个自出出现过 则加1
        #如果这个字符第一次出现,0+1
            d[ch] = d.get(ch,0) + 1
        chs = [ch for ch,n in d.items() if n==1]
        return chs

    测试样例

    arrays = 'asdfghvnjtryuisdgfsbcbvnp'
    arrays2 = 'ddfgewrweytrbbnytruetreczplo'
    print(search(arrays))
    print(search(arrays2))

    输出:

    ['y', 'h', 't', 'r', 'p', 'j', 'c', 'i', 'a', 'u']
    ['l', 'c', 'g', 'f', 'p', 'o', 'z', 'n', 'u']

  • 相关阅读:
    集合类型操作符
    ffmpeg 转换VC工具 V1.1.2 支持android.mk工程文件生成
    avplayer VS2008编译
    cocosBuiler使用简介&心得
    ffmpeg 转换VC工具 V1.1.2 支持android.mk工程文件生成
    ffmpeg优化
    avplayer VS2008编译
    VS2008+WDK 文件过滤驱动程序 开发环境配置
    cocosBuiler使用简介&心得
    ffmpeg优化
  • 原文地址:https://www.cnblogs.com/lateink/p/6483659.html
Copyright © 2011-2022 走看看