打印菱形
2020-05-28 本文已影响0人
Dreamsky_起航
给定一个奇数n
,打印实心的菱形
示例:
输入: n = 3
输出: n = 3的菱形.png
输入:n = 5
输出: n = 5的菱形.png
来源:
相关企业:
公司 | 出现时间 |
---|---|
快手 | 2020.04 |
解法:双循环
时间复杂度:O(n)
空间复杂度:O(1)
思路:将菱形拆分为上下两个三角形,分别进行打印:
- 上方三角形:因只需输出奇数个数的三角形,循环使用切片方式,只循环奇数对应的循环,每行对应的空格个数
space_count
为(n - i - 1) // 2
;星号数量star_count
为i + 1
- 下方三角形:只需输出
n//2
行即可,每行空格个数space_count
为i + 1
;星号数量star_count
为n - 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)