基於快排 查詢陣列中出現三次的元素

2021-07-04 23:07:09 字數 788 閱讀 2110

題目:

陣列中有乙個元素出現3次,其餘出現兩次

找到出現三次的元素,

要求空間複雜度 o(1) // 不要想用map

時間複雜度不大於o(nlgn)

思路:

快排,count 記錄在比較過程中與基準元素相等的個數,如果==3 , 則直接返回

//找到出現三次的數,陣列中的元素要麼出現兩次就是三次

public

static

intquicksort(int arr , int low , int high) ;

int pivot = parition(arr , low , high , count);

if(count[0] == 3)

int left = quicksort(arr , low ,pivot - 1);

if(left > 0) return left;

return quicksort(arr , pivot + 1 , high);

}private

static

intparition(int arr, int low, int high, int count)

if(arr[j] < arr[low]) swap(arr , ++i, j);

}swap(arr , i , low);

return i;

}private

static

void

swap(int arr, int i, int j)

陣列中出現的逆序對

題目描述 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。輸入 每個測試案例包括兩行 第一行包含乙個整數n,表示陣列中的元素個數。其中1 n 10 5。第二行包含n個整數,每個陣列均為int型別。輸出 對應每個測試案例,輸出...

陣列中出現最多的元素(思維)

陣列中有乙個數字出現的次數超過陣列長度的一半,即這個數字出現的次數比其他所有數字出現的次數的和還要多。遍歷陣列的時候儲存兩個值 陣列中元素的值 次數。在遍歷下乙個數字時,如果下乙個數字和之前儲存的數字相同,則次數加1 如果下乙個數字和之前儲存的數字不相同,則次數減1。如果次數為0,則儲存下乙個數字,...

MySQL在分頁查詢中出現資料重複

有時候分頁查詢時會中出現重複資料,一般都是相鄰的兩頁有部分資料重複,經過重新整理後,這部分資料又有可能不重複,然而查詢出來的總數是正確的,因為主鍵都是一樣的,所以資料庫中資料是正確的。那麼先看看那些重複資料有什麼相同點。經發現容易出現重複的資料,它的時間都是非常相近的。那麼再看看分頁的sql語句 s...