问题分析及总结(暴力算法)
1.数组定义及使用
- Java中必须先进行初始化分配空间之后才可以使用,有三种初始化的方式:
- 先使用new指定数组大小,再进行初始化:type[] arrayName = new type[];;
- 在初始化时直接赋值:type[] arrayname =new type[] {值1,值2,值3…,值n};;
- 在开辟空间后直接进行赋值,省略初始化环节:type[] arrayName = {值1,值2,值3…,值n};;
2.Java中的length,length(),size()用法比较
length | length() | size() |
---|---|---|
数组中的属性 ** | String**中的length()方法 | 泛型集合的数目 |
踩过的坑:
- 数组赋值: 只有在初始化可以整个数组赋值,方法中用到的赋值,只能单独给每一个数组元素赋值。
- Java中的length,length(),size()用法比较
- 代码逻辑:通常情况下要使用空间换时间的方法来优化算法
以本题为例,暴力算法需要两层循环,最坏情况下需要的时间复杂度为O(n²),空间复杂度为O(1); hash表的应用在最坏的情况下需要时间复杂度为O(n),空间复杂度为O(n),理想情况下时间复杂度甚至小于O(n)。
问题分析及总结(hash算法)
1.hash表的概念及使用
在数据结构中,hash表中包括含两个元素val和key,
此题中用到的是getContains()和put()方法
hashMap 使用
1. new hashMap 对象:
Map<Integer,Integer> hashmap = new hashMap<>();
注意:HashMap的Key跟Value不能是基本数据类型,而必须是引用数据类型或者包装数据类型。
2. hashmap属性及方法:
- 遍历hashMap:
for (Integer key : map.keySet()){} // keySet()方法可以遍历hashMap对象
- get(key)方法
返回hashMap中的value值,判断是否存在key值判返回值是否为空。 - put(key, value)方法
注意需要与初始化/定义的数据格式一致。 - containsKey()方法
boolean containsKey(Integer key); // 判断key是否有对应的value值;