(深坑)问题收集

1.斐波那契数列问题

  • 定义:

f(1) = 1;
f(2) = 1;
f(n) = f(n-1) + f(n-2);

  • 代码:
# 方法一:递归实现,这种实现方式当n很大时,会有栈溢出问题,内存占用大
def fib(n):
    if n == 1 or n == 2:
        return 1;
    else:
        return fib(n-1) + fib(n-2);

# 方法二:循环实现
def fib(n):
    if n == 1 or n == 2:
        return 1;
    i, first, second = 2, 0, 1;
    while i <= n:
        first, second = second, first + second;
        i = i+1;
    return second;

2.反转单词

例:
"how are you" -> "you are how"

# 方法一:将字符串分割成全部单词组成的列表,再利用切片
# 由后向前遍历,用空格连接每个单词,组成新的字符串并返回;
def reverse_words(s):
    return " ".join(s.split()[::-1])


# 方法二:先反转整个字符串,再反转每个单词
def reverse_words2(s):
    # 整个字符串整体反转
    # how are you -> uoy era woh
    list = s[::-1].split()
    # 对每一个元素进行反转
    # uoy era woh -> you are how
    list2 = [i[::-1] for i in list]
    return " ".join(list2)

3.快速排序

def quick_sort(list, first, last):
    if first >= last:
        return;
    key = list[first];
    i, j = first, last;
    while j > i:
        while j > i:
            if list[j] >= key:
                j = j - 1;
            else:
                break;
        if j > i:
            list[i],list[j] = list[j], key;
        while j > i:
            if list[i] <= key:
                i = i + 1;
            else:
                break;
        if j > i:
            list[i],list[j] = key, list[i];
    quick_sort(list, first, i-1);
    quick_sort(list, i+1, last);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-code.h...
    eddy_wiki阅读 9,393评论 0 30
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,499评论 0 10
  • 离婚了,前任父母不让见孩子怎么办?这样的狗血事情在我们芸芸众生中不断上演此起彼伏。 有的男方偷走不到一岁的孩子誓不...
    知了唯知爱阅读 554评论 0 0
  • 弟弟: 今天是文杰的生日,转眼间,他已满四岁,活泼可爱。他的出生,给你们带来了很多欢乐,同时还有希...
    花儿朵阅读 346评论 0 0
  • 今天,他上班第一天 心慌。好久没有这种感觉了。 特别想找他说话。 但是,还是不说了吧。 如果这是岔路口, 是不是我...
    悠悠生死魂魄梦阅读 86评论 0 0