//給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
//// 你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。
////
//// 示例:
//// 給定 nums = [2, 7, 11, 15], target = 9
////因為 nums[0] + nums[1] = 2 + 7 = 9
//所以返回 [0, 1]
// // related topics 陣列 雜湊表
// ? 9889 ? 0
解決方案:
1 暴力解決方案:2層for迴圈
2 借助hashmap利用 target=nums[0] + nums[1]
public
int[
]twosum
(int
nums,
int target)
for(
int i =
0; i < nums.length; i++)}
return index;
}
針對劍指offer中p81提到的場景,假如需要對公司內部幾萬個員工的年齡進行排序,要求時間複雜度為o(n),空間複雜度為o(1)。
主要思想:計數排序和前面的基排序類似,都是基於桶排序思想。由於這裡要求時間複雜度為o(n),低於基於比較的時間複雜度o(nlogn),所以前面7中排序演算法均失效。又因為該場景中年齡屬於乙個比較小的範圍,有大量的重複值,故可以考慮計數排序。實際做法是,新開乙個長度為100的陣列(假設年齡為0~99),陣列下標表示年齡,陣列儲存該下標對應的年齡出現的個數,最後再根據陣列的計數來排序。
public
static
void
agesort
(int
ages,
int num)
bucket[ages[i]]+=
1;}// 對原陣列重新賦值
int index=0;
for(
int i=
0;i}
演算法訓練(二)陣列反轉
題目一 把帶有空格的一句話例如 i am a boy 變成 boy a am i 單詞順序全部反轉,但是單詞內部的字母順序以及空格相對位置不能變。思路 一次就轉換成功看起來有些困難,於是這裡分兩步進行。i am a boy yob a ma i boy a am i 首先將陣列全部反轉,但發現這時候...
演算法 二維陣列
1.最長公共子串行 總結 就是在邊上加一圈零,比較相對應的字元,相等,值就等於左上角的值,不相等,值就去左邊和上邊的最大值。2.字串相似度 static int martix static string str1 dhongda static string str2 fehongda protect...
演算法 二維陣列
1.最長公共子串行 總結 就是在邊上加一圈零,比較相對應的字元,相等,值就等於左上角的值,不相等,值就去左邊和上邊的最大值。2.字串相似度 static int martix static string str1 dhongda static string str2 fehongda protect...