先說題量,90分鐘,總共23道題,具體題型如下:
注意; 每做完一道題進入下一道題,就不能看前面的題了!!!
下面給出我的題解,但不知對錯。
比如:
arr為[1,
4,7,
3,5,
2],pivot是3
那麼結果可以使[1,
2,3,
4,5,
7],pivot兩邊元素的順序需要考慮
乍一看就是快速排序的partition思想了
public
class_1;
partition
(arr1, pivot)
; system.out.
println
(arrays.
tostring
(arr1));
}private
static
void
partition
(int
array,
int pivot)
//控制左指標比較並右移
這裡就可以發現本題與快排的partition函式的區別了,快排的partition函式是將大於等於pivot的移到右邊,小於或等於pivot的移到左邊,並不一定把所有等於pivot的元素都移到了中間。
所有本題需要將繼續處理一下,使用雙指標的思路將pivot左右兩邊的等於pivot的元素都移到中間(pivot邊上)。如下所示:
public
class_1;
partition
(arr1, pivot)
; system.out.
println
(arrays.
tostring
(arr1));
int[
] arr2 =
newint
;partition
(arr2, pivot)
; system.out.
println
(arrays.
tostring
(arr2));
int[
] arr3 =
newint
;partition
(arr3, pivot)
; system.out.
println
(arrays.
tostring
(arr3));
}private
static
void
partition
(int
array,
int pivot)
//控制左指標比較並右移
while
(left < right && array[left]
<= pivot)
if(left < right)
}for
(int i =
0; i < array.length; i++)}
//此時,left等於right,並且array[left]等於pivot
//將left左邊的等於pivot的移到挨著left的位置
for(
int i =
0, j = left -
1; i <= j; i++)if
(array[i]
== pivot)
}//將left右邊的等於pivot的移到挨著left的位置
leetcode第375題,鏈結
估計這次筆試又涼了,唉,繼續刷題。
記錄2017 9 7CVTE嵌入式軟體筆試程式設計題
1.輸入乙個字串,輸出字串中最後出現次數最少的字元,如果都有重複,則輸出最後出現字元最多的字元,例如輸入 abbccdffgg 輸出 d 輸入 aaabbbccddee 輸出 b include include include include include using namespace std ...
深信服C 開發崗筆試記錄
資料庫 c c html os 計網面試準備 更新中 筆試共有三部分 不定項選擇 8道 填空 7道 程式設計 3道 選擇和填空的部分內容涉及較廣,計算機知識和數學計算知識都有,不詳細記錄,要注意填空的概率問題較多 程式設計題共三道 1.由n個容器分層疊放,編號從上到下為1到n,每個容器的容量為x,如...
網易遊戲2019暑期實習開發崗筆試題
第二題第三題 第四題簽到題,給出一句話,比如 how are you 反轉輸出,如 you are how 呃呃呃。給出n個數字,找出有多少組 三個數的最大公約數為1 找出多少組 兩個互質的數字 是用莫比烏斯反演,三個數,抱歉,沒想到怎麼做。據說暴力能過百分之50資料。有n個人要做過山車,過山車有限...