題目:
陣列中有乙個元素出現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...