面试中的算法题,不能一蹴而就

113 阅读1分钟

“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”

前言

题主已经有段时间没有面试了,尤其是笔试,很费解,要求做笔试的公司,要么就是技术不行,就是存心想恶心一下人,题主并不是说笔试有什么问题,因为岗位有些不一样,可能存在第一定的主观性,哪怕它是客官的答案。

笔试题解析

第一题:

list=[2,3,5,4,9,6],从小到大排序,不使用sort,输出[2,3,4,5,6,9]

  • 题意
它不是要求去计算ASCII值,而是纯数字的游戏,首先禁用了sort这个一步到位的方法,需要自己写。
  • 解法
1、很自然的想到算法,冒泡或者选择排序法;好像有点难度
2、咱们可以换个思路,既然它都是数字,是不是可以借鉴冒泡排序的思路:
   a> 第一知道list元素的最大值,range(m+1)
   b> 再去遍历它,如果那个元素存在于list中,应为循环range是从0开始的,所以他是最小的
   c> 最后就是最小的排最前
  • 代码
list=[2,3,5,4,9,6]
m=max(list)
li2=[]
for i in range(m+1):
    if i in list:
        li2.append(i)
print(li2) # [2,3,4,5,6,9]

扩展:冒泡排序

def bubble_sorted(list_num):
    for i in range(1, len(list_num)):
        isPer = False
        for j in range(len(list_num) - i):
            if list_num[j] > list_num[j + 1]:
                list_num[j], list_num[j + 1] = list_num[j + 1], list_num[j]
                isPer = True
        if not isPer:
            return list_num

小结

这种排序的笔试题,一是为了了解应聘者的代码能力,二是思考问题的能力,同一个问题,会有不同的解决办法,从而可以选择更好的。