演算法題 陣列內有序對的最大距離

2022-09-01 15:15:18 字數 674 閱讀 9977

題目:給定乙個陣列a,對於下標i < j,有a[i] < a[j],求j - i 的最大值。

思路:先正序遍歷一次,利用乙個輔助陣列,記錄每個元素的左邊子陣列中最小值的下標;然後倒序遍歷,維持兩個指標,初始都指向最後乙個元素,通過移動兩個指標,找出最大距離。

**

1 #include 2 #include 3

using

namespace

std;45

int maxdist(int num, intn)6

21else

2225}26

27for(int i = n - 1, j = n - 1; i >= 0

; )  //i < j

2837 --i; //對於當前的i來說,j已是最遠的,所以固定住j,i往左走,找到更大的j-i38}

39else

4043}44

45return

max_dist;46}

4748

intmain()49;

5253 cout << maxdist(num, n) <5455

return0;

56 }

演算法題 有序陣列去重

將有序陣列去重並且列印去重之後的長度。快慢指標思想,邏輯上的指標,並非 這個指標 定義兩個指標slow,fast。fast逐個遍歷元素,如果與slow不同,則把slow所指元素列印出來,如果與slow所指元素相同,則fast 1,直至遍歷結束。include using namespace std ...

演算法題 求陣列的逆序對

在陣列中的兩個數字如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。給你乙個陣列,求出這個陣列中逆序對的總數。概括 如果a i a j 且 i j,a i 和 a j 構成乙個逆序對。樣例 序列 2,4,1,3,5 中,有 3 個逆序對 2,1 4,1 4,3 則返回 3 思路 最簡單的想...

JS 到最近的人的最大距離 陣列 找最大距離

在一排座位 seats 中,1 代表有人坐在座位上,0 代表座位上是空的。返回最大距離 輸入 1,0,0,0,1,0,1 輸出 2 解釋 最大空座是3,向左邊或者右邊的人最大距離都是2 輸入 1,0,0,0 輸出 3 解釋 末位距離首位是3 輸入 0,0,0,1,0,0,0,0,1 輸出 3 解釋 ...