1.1 題目描述:
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。1.2 題解
1.2.1 暴力求解
public
intreversepairs
(int
nums)
}return count;
}
1.2.2 歸併排序public
intreversepairs
(int
nums)
int[
] temp =
newint
[len]
;//輔助陣列
return
reversepairs
(copy,
0, len -
1, temp);}
/** * nums[left..right] 計算逆序對個數並且排序
** @param copy
* @param left
* @param right
* @param temp
* @return
*/private
intreversepairs
(int
copy,
int left,
int right,
int[
] temp)
int count =
mergeandcount
(copy, left, mid, right, temp)
;return leftcount + rightcount + count;
}/**
* 合併處理
** @param copy
* @param left
* @param mid
* @param right
* @param temp
* @return
*/private
intmergeandcount
(int
copy,
int left,
int mid,
int right,
int[
] temp)
int count =0;
int l = left, r = mid +1;
for(
int j = left; j <= right; j++
)else
if(r == right +1)
else
if(temp[l]
<= temp[r]
)else
}return count;
}
2.1 題目描述:輸入兩個鍊錶,找出它們的第乙個公共節點。2.2 題解如下面的兩個鍊錶:
在節點 c1 開始相交。
2.2.1 雙指標法
解法形象來說就是:你變成我,走過我走過的路。
我變成你,走過你走過的路。
然後我們便相遇了…
public listnode getintersectionnode
(listnode heada, listnode headb)
return node1;
}
3.1 題目描述:示例 1:3.2 題解輸入: nums = [5,7,7,8,8,10], target = 8
輸出: 2
3.2.1二分法
排序陣列中的搜尋問題,首先想到 二分法 解決。leetcode演算法題 劍指Offer篇(1)
1.1 題目描述 在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。1.2 題解 1.2.1 利用map結構public intfindrepeatnumber i...
leetcode演算法題 劍指Offer篇(13)
1.1 題目描述 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。1.2 題解 1.2.1 摩爾投票法 驗證 x 是否為眾數 for int num nums if num i count return count nums.length 2?i 0 當無眾數時返回 0 2.1 題目描...
leetcode演算法題 劍指Offer篇(20)
1.1 題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。1.2 題解 1.2.1 雙指標public int twosum int nums,int target else if temp target i els...