資料結構 生成視窗最大值陣列

2021-07-15 00:25:13 字數 824 閱讀 2306

程式設計師**面試指南(左程雲)讀書筆記(7)

第一章生成視窗最大值陣列

題目:有乙個整形陣列arr和乙個大小為w的視窗從陣列的最左邊滑到最右邊,視窗每次向右邊滑乙個位置。

例如:陣列為【4、3、5、4、3、3、6、7】,視窗大小為3時:

【4、3、5】4、3、3、6、7     視窗最大值為5

4【3、5、4】3、3、6、7        視窗最大值為5

4、3【5、4、3】3、6、7        視窗最大值為5

4、3、5【4、3、3】6、7         視窗最大值為4

4、3、5、4【3、3、6】7         視窗最大值為6

4、3、5、4、3【3、6、7】        視窗最大值為7

如果陣列長度為n,視窗大小為w,則一共產生n-w+1個視窗的最大值

請實現乙個函式:

輸入:整形陣列arr,視窗大小為w

輸出:乙個長度為n-w+1的陣列res,res[i]表示每一種視窗狀態下的最大值。

解:public int getmaxwindow(int arr,int w)

linkedlistqmax=new linkedlist();

int res=new int[arr.length-w+1];

int index=0;

for(int i=0;iwhile(!qmax.isempty()&&arr[qmax.peeklast()]<=arr[i])

qmax.addlast(i);

if(qmax.peekfirst()==i-w)

if(i>=w-1) }

return res; }

生成視窗最大值陣列

題目描述 有乙個整型陣列arr和乙個大小為w的視窗從陣列的最左邊滑到最右邊,視窗每次向右邊滑乙個位置,求每一種視窗狀態下的最大值。如果陣列長度為n,視窗大小為w,則一共產生n w 1個視窗的最大值 輸入描述 第一行輸入n和w,分別代表陣列長度和視窗大小 第二行輸入n個整數x,表示陣列中的各個元素 輸...

生成視窗最大值陣列

有乙個整型陣列arr和乙個大小為w的視窗從陣列的最左邊滑到最右邊,視窗每次向右邊滑乙個位置,求每一種視窗狀態下的最大值。如果陣列長度為n,視窗大小為w,則一共產生n w 1個視窗的最大值 輸入描述 第一行輸入 n 和 w 分別代表陣列長度和視窗大小 第二行輸入 n 個整數 x ix i xi 表示陣...

生成視窗最大值陣列

說明 本文是左程雲老師所著的 程式設計師面試 指南 第一章中 生成視窗最大值陣列 這一題目的c 復現。感謝左程雲老師的支援。題目 有乙個整形陣列 arr 和乙個大小為 w 的視窗從陣列的最左邊滑到最右邊,視窗每次向右邊滑動乙個位置。例如,陣列為 視窗大小為3時 4 3 5 4 3 3 6 7 視窗中...