離散化處理有幾個方法:
方法一:
適用於所有情況(sort + unique + lower_bound)三段式:(關於這幾個函式請見我的另一篇部落格)
1、申請兩個陣列num和numcopy(這個陣列是num的副本)
2、利用unique函式對num陣列進行去重
3、利用lower_bound函式獲得numcopy中每個元素的相對位置
#include
#include
using
namespace std;
int num[
1001
],numcopy[
1001
],ans[
1001];
intmain()
sort
(num,num+n)
;//需要排序
for(
int i=
0;i) cout<
<<
" ";
cout<
int l=
unique
(num,num+n)
-num;
//去重後的個數
cout<<
"去重後的個數為:"
<
cout<
for(
int i=
0;i) cout<
<<
" ";
cout<
for(
int i=
0;i)//注意這裡是i
cout<
}
輸出結果為:
方法二:
啊,先鴿著~
資料離散化處理
離散化,把無限空間中有限的個體對映到有限的空間中去,以此提高演算法的時空效率。通俗的說,離散化是在不改變資料相對大小的條件下,對資料進行相應的縮小。例如 原資料 1,999,100000,15 處理後 1,3,4,2 原資料 處理後 例如有時需要將資料直接作為陣列下標,但因為資料太大而無法開陣列時,...
資料離散化處理
有時候,我們需要使用陣列下標來維護某些資料結構 例如並查集 但如果資料範圍太大我們開不了這麼大的陣列,這時候,我們就要將資料進行離散化。例如資料我們可以根據相對大小關係67542347 75331434 87433476 99844531來開乙個新陣列編號,二分查詢在新陣列裡的編號。如b 1 675...
資料離散化處理
離散化,把無限空間中有限的個體對映到有限的空間中去,以此提高演算法的時空效率。通俗的說,離散化是在不改變資料相對大小的條件下,對資料進行相應的縮小。例如 原資料 1,999,100000,15 處理後 1,3,4,2 原資料 處理後 用法 很多演算法的複雜度與資料中的最大值有關,比如樹狀陣列和純用陣...