本次挑战,你需要根据输入的排序类型,实现对输入数组的排序。其中,排序类型包括asc
(升序)或desc
(降序)。
补充完善右侧代码区中的sortArray(self,arr,sort)
函数,实现对给定数组的排序。其中,函数各参数含义如下:
arr
:输入数组sort
:排序类型样例1
输入:23,12,2,32,11,125
asc
输出:2
11
12
23
32
125
样例2
输入:23,12,2,32,11,125
desc
输出:125
32
23
12
11
2
注意:
sortArray
函数即可,其他代码无须填写;Python3.6.2
。开始挑战吧,祝你成功!
class Task():
def sortArray(self,arr,sort):
if sort == "asc":
arr.sort()
for i in range(len(arr)):
print(arr[i])
if sort == "desc":
array = sorted(arr)
array.reverse()
for i in range(len(array)):
print(array[i])
系统会输入一个0-100
的整数n
,要求当n
为偶数时,输出3/2+3/4+...+3/n
的和,当输入n
为奇数时,则输出4/1+4/3+...+4/n
的和。
补充右侧代码区域代码,要求根据输入的整数n
来输出相应结果。
样例
测试输入:3
预期输出:5.333333333333333
开始通关吧,祝你成功!
# coding=utf-8
num = int(input())
########## BEGIN ##########
num_sum = 0
if num%2 == 0:
for i in range(1,num+1):
if i%2 == 0:
num_sum += 3 / i
print(num_sum)
if num%2 != 0:
for i in range(1,num+1):
if i%2 != 0:
num_sum += 4/i
print(num_sum)
########## END ##########
编写代码,求一个n*n矩阵对角线元素之和。
补充完善右侧代码区中的matricSum(self,arr)
函数,实现矩阵对角线求和的功能。其中,函数参数含义如下:
样例
输入的矩阵是一个二维列表如:
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
第一个数为维度3
,后面依次输入1
到9
。
计算后输出:15
开始通关吧,祝你成功!
class Task:
########### BEGIN ##########
def matricSum(self,arr):
matric_sum = 0
for i in range(len(arr)):
for j in range(len(arr[0])):
if i ==j:
matric_sum += arr[i][j]
print(matric_sum)
编写代码 对给定的二维列表进行降序排序后输出该列表,将一维列表中的数据进行降序排序,然后以一维列表的和作为整体进行降序排序。
补充完善右侧代码区中的sortArray(self,arr)
函数,实现对给定列表的排序。其中,函数各参数含义如下:
样例
给定一个二维列表
{
{ 1,3,12,2,11},
{32,23,11,20,2},
{2,12,23,123,22},
{321,11,2,100,50},
{502,220,110,22,1}
}
排序后输出:
[502, 220, 110, 22, 1]
[321, 100, 50, 11, 2]
[123, 23, 22, 12, 2]
[32, 23, 20, 11, 2]
[12, 11, 3, 2, 1]
开始通关吧,祝你成功!
# 对给定的二维列表进行降序排序后输出该列表,将一维列表中的数据进行降序排序,然后以一维列表的和作为整体进行降序排序。
class Task:
# 功能是输出排序好的二维列表
# def sortArray(self,arr):
# new_array = list()
# for i in range(len(arr)):
# # array1D = sorted(arr[i])
# array1D = sorted(arr[i])
# array1D.reverse()
# new_array.append(array1D)
#
# new_array = sorted(new_array, key=lambda new_array: sum(new_array), reverse=True)
# print(new_array)
def sortArray(self,arr):
new_array = list()
for i in range(len(arr)):
# array1D = sorted(arr[i])
array1D = sorted(arr[i])
array1D.reverse()
new_array.append(array1D)
new_array = sorted(new_array, key=lambda new_array: sum(new_array), reverse=True)
#要求只输出排序好的一维列表
for i in range(len(new_array)):
print(new_array[i])
#测试
a = Task()
b = a.sortArray([[1,3,12,2,11],[32,23,11,20,2],[2,12,23,123,22],[321,11,2,100,50],[502,220,110,22,1]])
对于给定的二叉树,返回该二叉树的最大深度。
补充右侧代码区域的getDepth(self,treeNode)
函数,要求能返回二叉树的最大深度,其中函数参数定义如下:
注:选手在将二叉树的最大深度作为返回值返回即可。
样例
给出如下一棵二叉树:
1
/ \
8 1
/ \ / \
0 3 -4 -5
返回值为3
。
本关涉及到的二叉树TreeNode
的代码结构:
class TreeNode:
def __init__(self,elem=-1,left=None,right=None):
self.val=elem
self.left = left
self.right = right
开始通关吧,祝你成功!
# coding=utf-8
class Task:
########## BEGIN ##########
#### 返回二叉树的深度 #####
def getDepth(self, treeNode):
if treeNode == None:
return 0;
lDepth = Task.getDepth(self, treeNode.left);
rDepth = Task.getDepth(self, treeNode.right);
return max(lDepth, rDepth) + 1
########## END ##########