首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python急转弯-1-面试篇

Python急转弯-1-面试篇

作者头像
小团子
发布2019-07-18 15:44:53
3960
发布2019-07-18 15:44:53
举报
文章被收录于专栏:数据云团数据云团

算法是面试中出现频次最高,也是比较烧脑的题目;但真正的大牛还是不会太在乎面试中出现的这些题目,因为在他们看来,这些已经在大脑中演算了上百次。

① 先“分苹果”

1.先判断数组总和是否可以被n整除,否则没法分均匀;

2.然后再判断每份苹果与平均值的差,若差不是2的倍数,也无法移动成功;

3.如果前两个条件满足就把比均值多的苹果数减去均值,将其总数除以2,就是得到的移动次数了。

count = int(input())
ls = [int(key) for key in input().split()]

sum() 方法对系列进行求和计算。

def split_apple(n, ls):
    if sum(ls) % n != 0:
        return -1
    count = 0
    avg = sum(ls) // n

    for i in ls:
        if (i - avg) % 2 != 0:
            return -1
        if i > avg:
            count += (i - avg)
    return (int(count // 2))
print(split_apple(count, ls))

② 字符串中找出连续最长的数字串

在于判断是不是数的这个isnumeric()函数

li = input()
curlen, curstr, maxlen, maxstr = 0, '', 0, ''
  • enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
  • Python isnumeric() 方法检测字符串是否只由数字组成。这种方法是只针对unicode对象。
for key, value in enumerate(li):
    if value.isnumeric():
        curlen += 1
        curstr += value
        if curlen > maxlen:
            maxlen = curlen
            maxstr = curstr
    else:
        curlen = 0
        curstr = ''
print(maxstr)

③ 青蛙跳台阶

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

对于本题,前提只有 一次 1阶或者2阶的跳法。

a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1);

b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2);

c.由a\b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2);

d.然后通过实际的情况可以得出:只有一阶的时候 f(1) = 1 ,只有两阶的时候可以有 f(2) = 2;

e.可以发现最终得出的是一个斐波那契数列;

class Solution:
    def jump_floor(self, number):
        res = [1, 2]
        while len(res) <= number:
            res.append(res[-1] + res[-2])
        if number == 1:
            return 1
        else:
            return res[number - 1]
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档