目录
1、旋转图像(数组,数学)
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地(https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95) 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
示例
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]
示例 2:
输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
示例 3:
输入:matrix = [[1]]
输出:[[1]]
示例 4:
输入:matrix = [[1,2],[3,4]]
输出:[[3,1],[4,2]]
提示:
- matrix.length == n
- matrix[i].length == n
- 1 <= n <= 20
- -1000 <= matrix[i][j] <= 1000
选项代码:
class Solution(object):
def rotate(self, matrix):
if matrix is None or len(matrix) == 1:
return
ls = len(matrix)
for i in range(int(ls / 2)):
begin, end = i, ls - 1 - i
for k in range(ls - 2 * i - 1):
temp = matrix[end - k][begin]
matrix[end - k][begin] = matrix[end][end - k]
matrix[end][end - k] = matrix[begin + k][end]
matrix[begin + k][end] = matrix[begin][begin + k]
matrix[begin][begin + k] = temp
return matrix
if __name__ == '__main__':
s = Solution()
print(s.rotate( [[1,2,3],[4,5,6],[7,8,9]]))
print(s.rotate( [[1,2],[3,4]]))
2、二叉树的右视图(树,深度优先搜索)
给定一个二叉树的 根节点 root
,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
示例 1:
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]
示例 2:
输入: [1,null,3]
输出: [1,3]
示例 3:
输入: []
输出: []
提示:
- 二叉树的节点个数的范围是
[0,100]
-100 <= Node.val <= 100
选线代码:
from typing import List
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def rightSideView(self, root: TreeNode) -> List[int]:
if not root:
return []
res = []
curnode = [root]
nexnode = []
res.append(curnode[0].val)
while curnode:
for s in curnode:
if s.right:
nexnode.append(s.right)
if s.left:
nexnode.append(s.left)
if nexnode:
res.append(nexnode[0].val)
curnode = nexnode
nexnode = []
return res
3、列表奇偶拆分(散列表)
贡献者:kucodes
【问题描述】 输入一个列表,包含若干个整数(允许为空),然后将其中的奇数和偶数单独放置在一个列表中,保持原有顺序
【输入形式】
【输出形式】
分两行输出,第一行输出偶数序列,第二行输出奇数序列 【样例输入1】
[48,82,47,54,55,57,27,73,86,14]
【样例输出1】
48, 82, 54, 86, 14
47, 55, 57, 27, 73
【样例输入2】
[10, 22, 40] 【样例输出2】
10, 22, 40
NONE
【样例说明】
如果奇偶拆分后,奇数列表,或者偶数列表为空,请直接输出NONE表示
以下程序实现了这一功能,请你填补空白处内容:
x = input()
x1 = x.strip('[]')
x2 = x1.split(",")
a = []
b = []
for i in x2:
______________;
if a == []:
print("NONE")
else:
print(a)
if b == []:
print("NONE")
else:
print(b)
选项代码(已补全,并补充用例):
x = "[48,82,47,54,55,57,27,73,86,14]"
x1 = x.strip('[]')
x2 = x1.split(",")
a = []
b = []
for i in x2:
if int(i) % 2 == 0:
a.append(i)
else:
b.append(i)
if a == []:
print("NONE")
else:
print(a)
if b == []:
print("NONE")
else:
print(b)