陣列 面試題 16 16 部分排序

2022-09-13 08:42:08 字數 822 閱讀 2521

題目:

解答:

預設公升序(降序也只是改一點**,不影響)

原理:如果左側最大值大於中間的最小值,則一定會被中間序列包括;同理,如果右側最小值大於中間的最大值,則一定會被中間序列包括。

一遍遍歷 + 兩個指標(兩次掃瞄可一次遍歷完成)

1、從前向後掃瞄陣列,判斷當前array[i]是否比max小,是則將last置為當前array下標i,否則更新max;

2、從後向前掃瞄陣列,判斷當前array[len - 1 - i]是否比min大,是則將first置位當前下標len - 1 - i,否則更新min;

3、返回

1

class

solution ;8}

910int last = -1;11

int first = -1;12

13int max =int_min;

14int min =int_max;

1516

int len =array.size();

1718

for (int i = 0; i < len; i++)

1924

else

2528

29if (array[len - 1 -i] >min)

3033

else

3437}38

39return;40

}41 };

面試題 16 16 部分排序

給定乙個整數陣列,編寫乙個函式,找出索引m和n,只要將索引區間 m,n 的元素排好序,整個陣列就是有序的。注意 n m盡量最小,也就是說,找出符合條件的最短序列。函式返回值為 m,n 若不存在這樣的m和n 例如整個陣列是有序的 請返回 1,1 class solution int left 0,le...

演算法 面試題 16 16 部分排序

給定乙個整數陣列,編寫乙個函式,找出索引m和n,只要將索引區間 m,n 的元素排好序,整個陣列就是有序的。注意 n m盡量最小,也就是說,找出符合條件的最短序列。函式返回值為 m,n 若不存在這樣的m和n 例如整個陣列是有序的 請返回 1,1 示例 0 len array 1000000 解法 如果...

部分面試題

1.請程式設計遍歷頁面上所有textbox控制項並給它賦值為string.empty?答 foreach system.windows.forms.control control in this.controls 2.請程式設計實現乙個氣泡排序演算法?答 int array new int int ...