一、笔记部分
注意点:
1.出现次数之类的字眼一看就是Hash表,跑都跑不掉。
2.Hashmap<x,y> x,y不能是基本数据类型,必须用引用数据类型,因为封装类才有hashcode()和equals()方法,基本数据类型是没有方法的。、
3.
经典生成重复次数的语句。
步骤:
1.遍历数组,用哈希表记录每个数字出现的次数,然后形成一个【出现次数数组】。找出原数组的前k个高频元素,就相当于找出【出现次数数组】的前k大的值。
2.利用最小顶堆,看顶堆的出现次数是否比新加入的更大,如果更大堆中的都比这个新加入的大,如果小就将其交换。
队列知识:一般加入队列元素用offer
queue取出的元素是一个数组,尺寸是2的。所以会有[0]或[1]。取其中的数组中的元素
队列的赋值,是一个一个。poll方法赋值的。直接一个队列给另外一个队列是不行的。
精髓建哈希表
方法二:将建好的Hash表进行以“出现次数排序”利用随机选轴的快排进行排序
对于List想用所以要调用ArrayList实现类才行,直接写new List大错特错
对于Hashmap的增强for,前面是类的声明都要大写,字母,后面是已有的数据结构调用方法.entrySet()这里面包含着大量集合所有键值对的集合。
灵性之快排排序法:
1.随机选枢纽元素
2.将枢纽元素前面的值都换到前面(index灵性)
3.看k大小,小的话前K最大的所有数在前面数组,大的话,至少前面的数组都是大数,可以将其输出到ret,在后面数组还剩下k-(index-start)个坑继续找。
4.快排没有返回,这种只操作数组,不考虑返回最爽了。如果在快排返回,那必须画图看在哪个大括号返回。能写if就写if,为保证安全。
二、排序类型的高频面试题汇总:
https://blog.csdn.net/qq_40262372/article/details/112643107
三、各种类型的高频面试题汇总:
https://blog.csdn.net/qq_40262372/article/details/112556249