14个面试问题

##搬砖侠###

 

 1、检查列表是否包含整数x

l = [3, 3, 4, 5, 2, 111, 5] 
print(111 in l) # True

 

2、在整数列表中查找重复的数字
 

def find_duplicates(elements): 

    duplicates, seen = set(), set() 

    for element in elements: 

        if element in seen: 

            duplicates.add(element) 

        seen.add(element) 

return list(duplicates)

3、检查两个字符串是否有相同字母

def is_anagram(s1, s2): 
    return set(s1) == set(s2) 
print(is_anagram("elvis", "lives")) # True

4、从列表中删除重复项

lst = list(range(10)) + list(range(10))
print(lst)
lst = list(set(lst))
print(lst) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

5、在列表中查找整数对,使它们的和等于整数x

def find_pairs(l, x):
    pairs = []
    for (i, el_1) in enumerate(l):
        for (j, el_2) in enumerate(l[i+1:]):
            if el_1 + el_2 == x:
                pairs.append((el_1, el_2))
    return pairs

6、检查字符串是否为回文

def is_palindrome(phrase): 
    return phrase == phrase[::-1] 
print(is_palindrome("anna")) # True

7、使用列表作为堆栈、数组和队列

# as a list ... 
l = [3, 4] 
l += [5, 6] # l = [3, 4, 5, 6]

 # ... as a stack ... 
l.append(10) # l = [4, 5, 6, 10] 
l.pop() # l = [4, 5, 6] 

# ... and as a queue 
l.insert(0, 5) # l = [5, 4, 5, 6] 
l.pop() # l = [5, 4, 5]

8、获取[1…100]中的缺失数字

def get_missing_number(lst): 
    return set(range(lst[len(lst)-1])[1:]) - set(l) 
l = list(range(1,100)) 
l.remove(50) 
print(get_missing_number(l)) # 50

9、计算两个列表的交集

def intersect(lst1, lst2): 
    res, lst2_copy = [], lst2[:] 
    for el in lst1: 
        if el in lst2_copy: 
            res.append(el) 
            lst2_copy.remove(el) 
return res

10、在未排序列表中查找最大值和最小值

l = [4, 3, 6, 3, 4, 888, 1, -11, 22, 3] 
print(max(l)) # 888 
print(min(l)) # -11

11、使用递归反转字符串

def reverse(string): 
    if len(string)<=1: 
    return string return reverse(string[1:])+string[0] 
print(reverse("hello")) # olleh

12、计算前n个斐波那契数

a, b = 0, 1 
n = 10 
for i in range(n): 
    print(b) 
    a, b = b, a+b 
# 1, 1, 2, 3, 5, 8, ...

13、使用快速排序算法排序列表

def qsort(L): 
    if L == []: return [] 
    return qsort([x for x in L[1:] if x< L[0]]) + L[0:1] + qsort([x for x in L[1:] if x>=L[0]]) 
lst = [44, 33, 22, 5, 77, 55, 999] 
print(qsort(lst)) 
# [5, 22, 33, 44, 55, 77, 999]

14、查找字符串的所有排列

def get_permutations(w): 
    if len(w)<=1: return set(w) 
    smaller = get_permutations(w[1:]) 
    perms = set() 
    for x in smaller: 
        for pos in range(0,len(x)+1): 
            perm = x[:pos] + w[0] + x[pos:] 
            perms.add(perm) 
        return perms 
print(get_permutations("nan")) 
# {'nna', 'ann', 'nan'}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

危机时刻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值