每周一课:L15 Caterpillar method(15.1
2019-02-20 本文已影响2人
AiFany

P15.1 AbsDistinct
Compute number of distinct absolute values of sorted array elements.
-
P15.1 绝对值不同
计算有序数组中绝对值不同的数字的个数
有序数组中绝对值不同的数的个数,就是一个已经排好序的整数数组中绝对值不相同的数字的个数.
例如:
A[0]=-5,A[1]=-3,A[2]=-1,A[3]= 0,A[4]= 3,A[5]= 6
绝对值不同的数的个数为5, 因为其中有5个不同的绝对值: 0, 1, 3, 5, 6
编写一个函数:
def solution(A)
返回给定有序数组中绝对值不同的数的个数。
例如,针对上面的例子,函数应返回5。
假定:
- N是[1,100,000]内的整数;
- 数组A的每个元素都是区间[−2,147,483,648,2,147,483,647] 内的整数;
- 数组A是非递减序列;
- 解题思路
利用Python函数的绝对值函数abs以及去重函数set。
- Python3代码
# -*- coding:utf-8 -*-
# &Author AnFany
# Lesson 15:Caterpillar method
# P 15.1 AbsDistinct
def solution(A):
"""
计算数组A中绝对值不同的数字的个数
时间复杂度:O(N) or O(N*log(N))
:param A: 数组
:return: 绝对值不同的数字的个数
"""
return len(set(abs(i) for i in A))
- 结果
点击获得更多编程练习题。欢迎Follow,感谢Star!!! 扫描关注微信公众号pythonfan,获取更多。