找出数组重复次数最多的元素
难度:入门
描述:
给定一个字符串数组, 每一个元素代表一个 IP 地址,找到出现频率最高的 IP。
注:给定数据只有一个频率最高的 IP
样例:
1 | lines = ['192.168.1.1', '192.118.2.1', '192.168.1.1']; |
题目分析:
说了一堆,其实就是找出数组重复次数最多的元素
思路:
用对象来处理,将元素赋值到属性上,判断之前有没有这个属性。
这个方法数组去重的缺点:
虽然对象属性同样可以用来做数组去重,但是会将 number,NaN,undefined,null,变为字符串形式,因为对象的属性名就是一个字符串
代码:
1 | /** |
合并排序数组
难度:简单
描述:
合并两个排序的整数数组 A 和 B 变成一个新的排序数组。
样例:
给出A=[1,2,3,4]
,B=[2,4,5,6]
,返回 [1,2,2,3,4,4,5,6]
题目分析:
注意 A 和 B 本来就是排序好的数组,最简单的就是用sort
排序了。
sort
排序
- 把两个数组合并成一个数组
- 用 sort 升序进行排序。
1 | const mergeSortedArray = function(A, B) { |
先对比完一个数组:
初始两个变量分别对应一个数组,进入循环
i 和 j 不会同时递增,只在对应数组元素打败另一数组元素时才会递增,只要打败一个即可,因为两个数组一开始就是排序好的
i 和 j 必须有一个超过对应数组长度(这样至少有一个数组的元素被逐一比较过)
如果一个数组那边超过长度,会退出循环,但是可能由一方的长度还有剩余(比如一个元素打败另一数组的所有元素),所以我们需要将长度有剩余的数组剩下的元素全都 push 到新数组中(因为一开始就排序好的,后面出场的只会更强)
1 | const mergeSortedArray = function(A, B) { |