如何判断数组中start_time与end_time相同组合的出现次数是否达到3次
实现思路
- 以
start_time和end_time拼接的字符串作为唯一标识,用Map/普通对象统计每个时间组合的出现次数 - 遍历数组的过程中实时更新计数,只要某组计数达到3就直接返回false,提前终止遍历提升性能
- 全量遍历完成后无符合条件的组合则返回true
代码实现(JavaScript版本)
function validateTimeArr(arr) { const countMap = new Map() for (const item of arr) { // 用双竖线作为分隔符避免特殊字符导致的key冲突 const key = `${item.start_time}||${item.end_time}` const currentCount = (countMap.get(key) || 0) + 1 if (currentCount >= 3) { return false } countMap.set(key, currentCount) } return true }
测试示例
用你给出的示例数组调用函数即可验证效果:
const testArr = [ {"id": 1,"start_time": "10:00","end_time": "11:00"}, {"id": 2,"start_time": "11:00","end_time": "12:00"}, {"id": 3,"start_time": "13:00","end_time": "15:00"}, {"id": 4,"start_time": "13:00","end_time": "14:00"}, {"id": 5,"start_time": "13:00","end_time": "14:00"}, {"id": 6,"start_time": "13:00","end_time": "14:00"}, {"id": 7,"start_time": "14:00","end_time": "15:00"}, {"id": 8,"start_time": "17:00","end_time": "18:00"}, {"id": 9,"start_time": "17:00","end_time": "18:00"}, {"id": 10,"start_time": "17:00","end_time": "18:00"} ] console.log(validateTimeArr(testArr)) // 输出 false
说明
如果是其他编程语言,思路完全一致,替换对应哈希表的实现即可,无需调整核心逻辑。
内容的提问来源于stack exchange,提问作者Wcan
相关产品推荐
相关产品推荐

