LC--begin 01 two sum

本文深入探讨LeetCode经典题目“两数之和”的多种解决方案,包括暴力破解、两次哈希表及一次哈希表方法。解析了时间复杂度优化策略,如通过空间换时间,以及哈希表在算法中的应用,如元素与索引的映射。同时,对比了HashMap与Hashtable的区别。

··brute force--强力暴力

··IllegalArgumentException--不合法的参数

   throw new IllegalArgumentException(" no two num solution");

返回数组下标。下标就是i,j和,暴力完全能想到啊。。被leetcode给吓到了,也被c++的大家vecctor的解析吓到了

时间复杂度O(n2)

 

two-pass hash table --二次哈希表--两个iterator--俩for循环

 improve run time complexity---减小时间复杂度,空间换取时间。

chect if the complement exist in the array(补充,补足)

hash table can maintain a mapping of each element in the array to its index--

哈希表能够保持一个   数组元素与索引的映射

hashmap和hashtable区别

【1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
2.hashTable同步的,而HashMap是非同步的,效率上比hashTable要高。
3.hashMap允许空键值,而hashTable不允许。】

containsValue()  true

containsKey() true

get(key)---value

Map<integer,integer> map=new HashMap<>();

同样也需要IllegalArgumentException("cvbvcvvc");

 

一次哈希表--使用一个iterator

先看map是否contains ,如果不,put,否则返回

//第二次重新做的时候,发现了一些错误:

如下:

·Map<Integer,Integer> map=new HashMap<>();

·因为HashMap不存在根据value取值,而本题因为map中能够保存的value一定不一样,所以考虑不是把索引变成key,而是用nums[i]作为key,i作为value

 即get(Object key);

·有可能最后没办法放回,所以循环结束加上 throw new IlllegalArgumentException(" cxxxxxx");

总之就是--看完解答感觉好简单

 

转载于:https://www.cnblogs.com/Cherrylalala/p/5896285.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值