演算法(二)陣列

2021-10-12 19:59:34 字數 1110 閱讀 2902

//給定乙個整數陣列 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...