陣列中任取兩個數字,如果前面的數字大於後面的數字稱為乙個逆序對
如:1,2,1,2,1 有3個逆序對
思路:知道o(n2)肯定是錯的。開始想hash,試圖找到o(n)的演算法,想了很久,找不到。後來想到排序,用原陣列與排好序的陣列對比,我寫的快排,還是不對。想了幾個小時,無奈看答案,原來是用變形的歸併排序。排序真是博大精深,換個樣子我就想不到了....
在牛客網上ac的**:腦子不清醒,各種小錯,提交了好多遍。
classsolution
void mymerge(vector &data, int & ans, int l, int m, int r, vector &v)
else
}while(i <=m)
v[k++] = data[i++];
while(j <=r)
v[k++] = data[j++];
for(k = 0; k < r - l + 1; k++)
data[k + l] =v[k];
}int inversepairs(vectordata)
};
劍指offer題目
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣...
劍指offer的題目
題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。分析 跳乙個n階台階的方法數 class solution 題目描述 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總...
劍指offer全套解答 劍指offer 36 45
36.兩個鍊錶的第乙個公共節點 輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的 public class solution return p 37.數字在排序陣列 現的次數 統計乙個數字在公升序陣列 現的次數。publi...