algorithm - 如何在数组中找到相同元素的子序列
问题描述
我正在为我的爱好任务寻找一种算法。
例如我们有测试数据用例:
var case1 = ['green', 'red', 'red', 'blue', 'green', 'green', 'green'];
var case2 = ['blue', 'blue', 'green', 'yellow', 'blue', 'orange', 'green', 'green', 'green', 'green'];
var case3 = ['purple', 'blue', 'blue', 'blue', 'red'];
输出:
var result1 = ['red', 'red', 'green', 'green', 'green'];
var result2 = ['blue', 'blue', 'green', 'green', 'green', 'green'];
var result3 = ['blue', 'blue', 'blue'];
谁能告诉我应该使用哪种算法?重复的经典方式 - 不像我看的那样。
解决方案
因此,在 javascript 中,一个天真的实现将是:
function selectSequential(source) {
var result = [];
for (let i = 0; i < source.length; i++) {
if ((i != source.length-1 && source[i+1] === source[i])
|| (i != 0 && source[i-1] === source[i])) {
result.push(source[i]);
}
}
return result;
}
推荐阅读
- r - 如何在给定字符串处分隔数据文件中的列?
- php - 数组中的 div 回显多次出现
- google-cloud-platform - 嵌入式实体和使用 GCP 数据存储上的祖先路径的实体之间的区别
- sql - 如何通过从 SQL 查询中删除分隔符来获取记录
- python - 使用关键字参数“{'pk': ''}' 未找到“plan_edit”的反向。尝试了 1 种模式:['palan/edit$']
- tensorflow - 为什么 AdamOptimizer 无法找到最小化 x*x 的最优值?
- android - 如何将材料组件库中的芯片添加到android中的输入字段?
- java - java.net.SocketException:连接重置-在tomcat中部署为webapps的客户端和服务器之间
- java - 在数组中查找重复项
- javascript - 将 DateTime 推送到 Javascript 数组