题目:
解题思路:
题目最终求解的是只包含两种元素的最长的连续子序列。
因此需要明确已下几点:
- 如何保证水果的种类只有两种?
- 当子序列中水果种类已经有两种,如何删除旧的水果种类,添加新的水果种类?
对于上述两个问题,答案如下:
设置一个保存水果种类的数组,初始化时填入第一棵树的水果种类。 ftype = [fruits[0]]
当走到下一棵树时,先判断是否是已经保存的水果种类 ftype.includes(fruits[j]
,如果没有包含,则存在下面两种情况:
1 | // 1. 只有一种水果,将新的水果种类加入种类数组中 |
另外,解题时还要注意对于当前种类水果最后一个位置的保存。
解题代码:
1 | var totalFruit = function(fruits) { |
补充知识:
Array.includes()
方法用来判断一个数组是否包含一个指定的值。arr.includes(searchElement, fromIndex)
参数 | 描述 |
---|---|
searchElement | 必须。需要查找的元素值。 |
fromIndex | 可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。 |
返回值:
包含元素返回true,不包含元素返回false。