日常记录 :LeetCode 1题 两数之和

暴力解法

int[] subscript = new int[2];
// 这里的 length - 1 只需要循环到数组前一个数即可
for (int i = 0 ; i < nums.length - 1 ; i ++) { 
	// 这里的 i + 1 是指的的 第二个数要是在第一个数的后面
	for (int j = i + 1 ; j < nums.length ; j ++) {
		if (nums[i] + nums[j] == target) {
			subscript[0] = i ;
			subscript[1] = j ;
			return subscript ;
		}
	}
}
return subscript ;

哈希表法:
java

Map<Integer , Integer >HashSum = new HashMap<>();
for (int i = 0 ; i < nums.length ; i ++) {
    int complement = target - nums[i] ;
    if(HashSum.containsKey(nums[i])) {
        return new int[]{HashSum.get(nums[i]),i};
    }
    HashSum.put(complement,i);
}
return new int[2] ;

GO :

// go 的 map 实现是用 hash表完成的
Map := map[int]int{}
for i , v:= range nums {
	if k , ok := Map[v] ; ok  {
		return []int{k,i}
	}
	Map[target - v] = i
}
return []int{}

Python :

hashMap = {}
for i,num in enumerate(nums) :
    if hashMap.get(num) is not None :
        return [hashMap.get(num),i];
    hashMap[target - num] = i
return []

用PHP数组key不重复的特性

/**
 * @param Integer[] $nums
 * @param Integer $target
 * @return Integer[]
 */
 function twoSum($nums, $target) {
     $twonums = array(); // 创建数组
     // 循环 并判断是不是存在 数组中 
     foreach ( $nums as $k => $v ) {
         if(isset($twonums[$v])) {
         	 // 如果存在直接返回
             return array($twonums[$v],$k);
         }
         $twonums[ $target - $v ] =  $k ;
     } 
     // 返回数组
     return array();
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值