两数之和
PHP 2220ms:
暴力解法,循环遍历$nums数组,用$target减去当前遍历到的数组元素,用所获得的值比较后一个值是否相等,并返回。时间复杂度O(),空间复杂度O(1)
class Solution {
function twoSum($nums, $target) {
for($i=0;$i<count($nums);$i++){
for($j=$i+1;$j<count($nums);$j++){
if($nums[$j] == $target-$nums[$i]){
return [$i,$j];
}
}
}
}
}
可以使用哈希表来牺牲空间复杂度减少时间复杂度,在PHP中的表现为关联数组,时间复杂度为O(n),空间复杂度为O(n)。比暴力破解快很多。
golang,4ms:
哈希表做法
func twoSum(nums []int, target int) []int {
tar := make(map[int]int)
var res []int
for i:=0;i<len(nums);i++{
tar[target-nums[i]] = i
}
for j:=0;j<len(nums);j++{
if tar[nums[j]]>0 && tar[nums[j]]!=j{
res = append(res,j,tar[nums[j]])
break
}
}
return res
}