贝壳-210813-1

n行田地m值浇水

题目描述

有n行田地,m值的水量,从1浇道n行,再返回浇水(即从n-1浇到1),直到水没有,求每行水量,如4行田地,6值的水量,结果应为[1,2,2,1]

题解1

import sys
def Solution():
    """
    2021-08-13 
    n lines with m bread, put bread in lines
    :rtype: list 
    """
    for line in sys.stdin:
        a = line.strip().split(',')
        a = [int(i) for i in a]
        m = a[0]
        n = a[1]

        ret_list = [0]*n

        while m > 0:
            for i in range(0,2*n-2):
                if i in range(0,n):
                    ret_list[i] = ret_list[i] + 1
                else:
                    index = -i+n-2
                    ret_list[index] = ret_list[index] + 1
                m = m - 1

                if m <= 0:
                    break
        print(ret_list)

        return ret_list
Solution()
  • 思路:将问题转化为给[0,2n-2]行田地浇水,直到水量为0
  • 分析:实际通过率只有10%,该方法时间复杂度过高

题解2

import sys

def Solution():

    for line in sys.stdin:
        a = line.strip().split(',')
        a = [int(i) for i in a]
        m = a[0]
        n = a[1]

        ret_list = [0] * n 
        real_n = 2*n - 2

        group_num = m // real_n
        rest_num = m % real_n

        for i in range(1,n-1):
            ret_list[i] = group_num*2
        ret_list[0] = group_num
        ret_list[n-1] = group_num

        signal_val = 1
        i = 0

        while rest_num > 0:
            ret_list[i] = ret_list[i] + 1
            rest_num = rest_num - 1
            if signal_val:
                i = i + 1
                if i == n - 1:
                    signal_val = 0
            else:
                i = i - 1

        print(ret_list)
        return ret_list

Solution()
  • 参考了该帖子
  • 取整m//(2n-2),将取整的结果直接填到待求数组中,ret_list[1:n-2]为2*取整结果,ret_list[0]和ret_list[n-1]为取整结果
  • 将余数填到待求数组中,利用flag标记控制数组上升下降方向
  • 时间复杂度降低,为o(n)
#贝壳##笔经##贝壳找房#
全部评论

相关推荐

04-02 10:09
门头沟学院 Java
用微笑面对困难:这里面问题还是很多的,我也不清楚为啥大家会感觉没啥问题。首先就是全栈开发实习9个月的内容都没有java实习生的内容多,1整个技术栈没看出太核心和难点的内容,感觉好像被拉过去打杂了,而且全栈基本上很容易被毙。里面能问的bug是在太多了比如L:继承 BaseMapper 可直接使用内置方法’。请问你的 BaseMapper 是如何扫描实体类注解如果瞬时产生 100 个上传任务,MySQL 的索引设计是否会有瓶颈?你做过分库分表或者索引优化吗?全栈的内容可以针对动态难点去搞,技能特长写在下面吧,你写了这么多技能,项目和实习体现了多少?你可以在项目里多做文章然后把这个放下去,从大致来看实习不算太水,有含金量你也要写上内容针对哨兵里面的节点变化能问出一万个问题,这个很容易就爆了。
提前批简历挂麻了怎么办
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务