1. 程式人生 > >四道面試遇到的題(簡單,大神莫噴)

四道面試遇到的題(簡單,大神莫噴)

1.二分法,查詢第一個出錯的檔案(leetcode有原題)

def find_first(n):
    left=1, right=n
    while True:
        mid=(left+right)/2
        if isBadversion(mid):
            if mid==1 or not isBadversion(mid-1):
                return mid
            right=mid-1
        left=mid
   

2.輸出兩個列表的交集

a=[1,2,3,4]
b=[2,3,4,5]
c=[val for val in a if val in b]

3.輸出一個檔案中,前十的單詞

def find_word(filename):
    result_dict={}
    with open(filename) as fp:
        for i in fp:
            wordlist=i.split()
            for j in wordlist:
                if not result_dict.has_key(j):
                    result_dict[j]=1
                else:
                    result_dict[j]+=1
    sort_result=sorted(result_dict.items, key=lambda x:x[0], reverse=True)
    return sort_result[:11]

4.兩數之和O(n)複雜度

def sum_2(nums, target):
    num_dic={}
    for i in range(len(nums)):
        if not num_dic.has_key(nums[i]):
            num_dic[target-nums[i]]=i
        else:
            return [num_dic.get(nums[i])+1, i+1]