概念:
离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。
本质:
一种哈希,将离散的数字、浮点数,转换成1-n
例如:【100,200,300,400,500】,离散化后为【1,2.3,4,5】
所有仅关注偏序关系的题目,均可以先离散化
具体代码如下
from bisect import *
def Descrete(a):
b = list(set(a))
b.sort()
print("b = ",b)
ans = []
for x in a:
ans.append(bisect_left(b,x) + 1)
return ans
a = list(map(int, input().split()))
print(Descrete(a))
def Descrete2(a):
b = list(set(a))
b.sort()
dic = dict(zip(b,range(len(b))))
ans = []
for x in a:
ans.append(dic[x])
return ans
a = list(map(int, input().split()))
print(Descrete2(a))