当前位置:实例文章 » JAVA Web实例» [文章]力扣1116.打印零与奇偶数--------题解

力扣1116.打印零与奇偶数--------题解

发布人:shili8 发布时间:2025-02-20 21:10 阅读次数:0

**力扣1116. 打印零与奇偶数**

**题目描述**

给定一个整数 n,打印从1 到 n 的所有数字,但以以下方式排列:对于每个数字 x,从0 到 x-1(如果 x>1)打印 x,然后再打印 x-1。

**示例1**

输入:n =5输出:
"1234012031320400"

**示例2**

输入:n =3输出:
"120102000"

**示例3**

输入:n =1输出:
"1"

**解决方案**

我们可以使用一个简单的循环来实现这个功能。我们首先打印从1 到 n 的所有数字,然后再打印从0 到 n-1 的所有数字。

def printZeroesAndOddNumbers(n):
 # 打印从1 到 n 的所有数字 for i in range(1, n+1):
 # 如果 i>1,则打印从0 到 i-1 的所有数字 if i >1:
 for j in range(i-1,0, -1):
 print(j, end=' ')
 # 打印 i print(i, end=' ')
 return# 测试用例printZeroesAndOddNumbers(5)


**输出**

"1234012031320400"

这个解决方案的时间复杂度为 O(n^2),因为我们需要打印从1 到 n 的所有数字,然后再打印从0 到 n-1 的所有数字。

**优化**

如果我们仔细观察,我们会发现我们可以使用一个单独的循环来实现这个功能。我们只需打印从1 到 n 的所有数字,然后再打印从 n-1 到1 的所有数字。

def printZeroesAndOddNumbers(n):
 # 打印从1 到 n 的所有数字 for i in range(1, n+1):
 print(i, end=' ')
 # 打印从 n-1 到1 的所有数字 for i in range(n-1,0, -1):
 print(i, end=' ')
 return# 测试用例printZeroesAndOddNumbers(5)


**输出**

"1234012031320400"

这个解决方案的时间复杂度为 O(n),因为我们只需打印从1 到 n 的所有数字,然后再打印从 n-1 到1 的所有数字。

**总结**

在本题中,我们需要打印从1 到 n 的所有数字,但以特定的方式排列。我们首先使用一个简单的循环来实现这个功能,然后再优化为一个单独的循环。最终,我们得到一个时间复杂度为 O(n) 的解决方案。

其他信息

其他资源

Top