序文
質問の順序:
最初のパス: 配列、スタック、キュー -> リンク リスト -> ツリー -> ハッシュ テーブル -> ダブル ポインター -> グラフ -> シミュレーション、列挙、再帰 -> ソート
2 番目のパス: 二等分 -> スライディング ウィンドウ -> 検索 -> 動的プログラミング -> ナップザック問題 -> 分割統治 -> 貪欲 -> ビット演算
3 番目のパス: トライ -> 結合 - 検索 -> 枝刈り -> 文字列マッチング -> ヒープ -> スキップ リスト -> 線分ツリー
1. 知識ポイントの配列
1、
2.リートコードの質問
T1
コードは以下のように表示されます。
class Solution {
public int[] twoSum(int[] nums, int target) {
//int[] result=new int[2];
for(int i=0;i<nums.length-1;i++)
{
for(int j=i+1;j<nums.length;j++)
{
//System.out.println(i+","+j);
if(nums[i]+nums[j]==target)
{
return new int[]{i,j};
}
}
}
return null;
}
}
T4
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
//-----------------合并两个数组并且排序-------------------------
int l1=nums1.length;
int l2=nums2.length;
int l=l1+l2;
int[] combine=new int[l1+l2];
//--------(被复制的数组,起始位置,结果数组,起始,拷贝的长度)
System.arraycopy(nums1,0,combine,0,l1);
System.arraycopy(nums2,0,combine,l1,l2);
Arrays.sort(combine);
// for(int e:combine)
// {
// System.out.print(e+" ");
// }
//----------------------得到中位数---------------------------
//是否为偶数
if(l%2==0)//没有余数,偶数
{
return (double)(combine[l/2-1]+combine[l/2])/2;
}
else{
return combine[l/2];
}
}
}