关于 leetcode 的的 1103 题目

2020-08-09 21:28:27 +08:00
 18870715400

我的解法

def distributeCandies(candies: int, num_people: int):
    ans = [0] * num_people
    i = 1
    while 1:
        person = (i % num_people) - 1
        ans[person] += i
        candies -= i
        if (i + i) >= candies:
            print("i+1:{}   candies:{}".format(i+1, candies))
            person = ((i + 1) % num_people) - 1
            ans[person] += candies
            break
        else:
            i += 1
    return ans

res = distributeCandies(7, 4)

print(res)

最后出来的结果:

i+1:3   candies:4
[1, 2, 4, 0]

答案是错误的, 为什么在 i = 2 的时候还是会进入到 if 的判断里面去, 我已经打印出来了, i+1 = 3 candies=4 但是 if (i+1) >= candies 还是为 True ,为什么呢

附上正确答案

def distributeCandies(candies: int, num_people: int):
    ans = [0] * num_people
    i = 1
    while 1:
        person = (i % num_people) - 1
        ans[person] += i
        candies -= i
        i += 1
        if i >= candies:
            print("i:{}   candies:{}".format(i, candies))
            person = i % num_people - 1
            ans[person] += candies
            break

    return ans


res = distributeCandies(7, 4)

print(res)
2276 次点击
所在节点    Python
2 条回复
chenstack
2020-08-09 22:20:03 +08:00
第一段的
if (i + i) >= candies:
应该是打错了,i + 1 打成来 i + i,两个 i 了
18870715400
2020-08-09 22:22:28 +08:00
@chenstack 笔误了, 低级了, 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696905

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX