兩層遍歷,最直觀
時間複雜度: o(n*n)
**實現:
public int twosum(int numbers, int target) }}
return result;
}
時間複雜度:o(n)
第一遍遍歷:將(target-a)和i 作為鍵值對,存入hash表,遍歷時間複雜度為o(n),
第二遍遍歷:查詢在hash表中有和當前數相同的key,每次查詢時間複雜度為o(1),遍歷時間複雜度為o(n),
總的時間複雜度是o(2n)。
**實現:
public int twosum(int numbers, int target)
// 2. 查詢在hash表中有和當前數相同的key
for (int j = 0; j < numbers.length; j++)
}return result;
}
給定乙個整數陣列,找出其中兩個數相加等於目標值
example given nums 2,7,11,15 target 9,because nums 0 nums 1 2 7 9,return 0,1 題目的意思 在無序的陣列中找兩個數,使得這兩個數之和與給定的目標值相等,返回這兩個數的下標。大佬們的做法 下面 不是好的實現方法,可以用hash表...
給定乙個陣列,找出陣列缺少的最小的正整數
題目使這樣的 請設計乙個高效演算法,查詢陣列中未出現的最小正整數。給定乙個整數陣列a,請返回陣列中未出現的最小正整數。測試樣例 1,2,3,4 返回1一看到這個題目我想到的是用另外的乙個陣列b,長度為a的長度 1,來儲存遍歷陣列a的數的值。if a i i 1 b i 1 a i 然後遍歷陣列b,出...
找出整數陣列中兩個數差值的絕對值最小
有乙個整數陣列,請求出兩兩之差絕對值最小的值,記住,只要得出最小值即可,不需要求出是哪兩個數。下面是乙個結髮了,利用了stl 的sort 來晚成排序。include iostream include vector include ctime include cstdio include cmath ...