打印菱形

给定一个奇数n,打印实心的菱形
示例:

输入: n = 3

输出:
n = 3的菱形.png

输入:n = 5

输出:
n = 5的菱形.png

来源:
相关企业:

公司 出现时间
快手 2020.04

解法:双循环
时间复杂度:O(n)
空间复杂度:O(1)
思路:将菱形拆分为上下两个三角形,分别进行打印:

  • 上方三角形:因只需输出奇数个数的三角形,循环使用切片方式,只循环奇数对应的循环,每行对应的空格个数space_count(n - i - 1) // 2;星号数量star_counti + 1
  • 下方三角形:只需输出n//2行即可,每行空格个数space_counti + 1;星号数量star_countn - 2 * (i + 1)
    代码:
 def printDiamond(self, n: int) -> void:
        for i in range(n)[0: n: 2]:
          space_count, star_count = (n - i - 1) // 2, i + 1
          print(' ' * space_count + '*' * star_count)

        for i in range(n // 2):
            space_count, star_count = i + 1, n - 2 * (i + 1)
            print(' ' * space_count + '*' * star_count)

你可能感兴趣的:(打印菱形)