美文网首页
412. Fizz Buzz and 463. Island P

412. Fizz Buzz and 463. Island P

作者: byr_hfaltgg | 来源:发表于2017-07-11 01:31 被阅读0次

主要写写这两个问题在Solutions里的one line python的解法,题目本身都很容易。

  1. Fizz Buzz
def fizzBuzz(self, n):
    return ['Fizz' * (not i % 3) + 'Buzz' * (not i % 5) or str(i) for i in range(1, n+1)]

这个问题有两个特别的语法点,一个是or除了逻辑运算符的功能外,还有一个语义是返回第一个非空对象,第二个是字符串也可以用乘法(以前只知道加法。。。)

  1. Island Perimeter
def islandPerimeter(self, grid):
    return sum(sum(map(operator.ne, [0] + row, row + [0]))
               for row in grid + map(list, zip(*grid)))

这个onelinepython着实让我想了一阵子。。。。前一个不明白的点就是map(operator.ne, [0] + row, row + [0]),后来通过各种实验和打印数据,发现这句话就是让每个grid中的row去和自己的后一位(或者理解成前一位也没问题)去做异或,然后第一位和最后一位和0做异或,之后sum起来,就是边的长度了。

再有一个点是for row in grid + map(list, zip(grid),后面的map(list, zip(grid)我在查了zip的用法之后发现,这里就是把整个grid翻转map之后返回的就是个完全转秩的grid,然后这里for循环的row其实就是col了(当然前面的那个in grid中取得还是row)。

真的是,很简洁的写法,但是工程中(工作的时候)我是绝对不会这么写的,虽然看起来很cooooooool!但是少写10几行代码的代价就是后人理解起来要花费10倍的时间。

相关文章

  • 412. Fizz Buzz and 463. Island P

    主要写写这两个问题在Solutions里的one line python的解法,题目本身都很容易。 Fizz Bu...

  • LeetCode 411-430

    412. Fizz Buzz[https://leetcode-cn.com/problems/fizz-buzz...

  • Leetcode PHP题解--D40 412. Fizz Bu

    412. Fizz Buzz 题目链接 412. Fizz Buzz 题目分析 这个题目也很简单。 从1逐个输出到...

  • Leetcode 412 Fizz Buzz

    题目链接:412. Fizz Buzz 题目描述 Write a program that outputs the...

  • 412. Fizz Buzz

    一、题目原型: 写一个程序,输出从 1 到 n 数字的字符串表示。 如果 n 是3的倍数,输出“Fizz”;如果 ...

  • 412. Fizz Buzz

    Write a program that outputs the string representation of...

  • 412. Fizz Buzz

    Write a program that outputs the string representation of...

  • 412. Fizz Buzz

    题目分析 题目链接,登录 LeetCode 后可用思路比较简单,直接遍历1 到 n 的每个数,依次判断每种情况即可...

  • 412. Fizz Buzz

    Write a program that outputs the string representation of...

  • 412. Fizz Buzz

网友评论

      本文标题:412. Fizz Buzz and 463. Island P

      本文链接:https://www.haomeiwen.com/subject/umnlhxtx.html