贝壳-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)
#贝壳##笔经##贝壳找房#
全部评论

相关推荐

和蔼:在竞争中脱颖而出,厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
3 3 评论
分享
牛客网
牛客企业服务