2018春招-今日頭條筆試題-第一題(python)


題目描述:2018春招-今日頭條筆試題5題(后附大佬答案-c++版)

解題思路:

要想得到輸入的數字列中存在相隔為k的數,可以將輸入的數字加上k,然后判斷其在不在輸入的數字列中即可。

#-*- coding:utf-8 -*-
class Fun: def __init__(self,string,k): self.string=string self.k=int(k) self._set=set() def fun(self): l=set() #用於存儲,已經比較的數,防止重復比較
        for i in self.string: if l not in l:  #只比較未比較的
                if str(int(i)+self.k) in self.string: self._set.add(i + str(int(i)+self.k)) #將符合的數字對以字符串的形式存入集合
                l.add(i)    #已經的比較的放入集合
        return len(self._set)  #返回集合的長度
 n_k=raw_input().split(' ') k=n_k[1] string=raw_input().split(' ') print Fun(string,k).fun()

大佬的做法:將輸入的數字數列去重,全部加k,生成一個新的list后,比較這里兩個list的相同數的個數

#-*- coding:utf-8 -*-
def diff_list(lst, k): #將原始字符串轉化為int類型加k,生成新的list
    newlst = [str(int(i) + int(k)) for i in lst] #將list轉為集合(去重),利用&操作得到兩個set集合的相同數的集合
    print len(set(lst) & set(newlst)) n_k=raw_input().split(' ') n=n_k[0] k=n_k[1] string=raw_input().split(' ') diff_list(string,k)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM