如何编写逻辑:提取队列从前往后每第3个元素至输出队列,无则返回-1
如何从队列中提取指定间隔的元素(匹配你的示例需求)
嘿,我来帮你解决这个问题!先结合你的示例把需求掰扯清楚:
从输入队列的队首到队尾,提取第4、7、10...个元素(也就是从第4个开始,每数3个元素取一个);如果没有符合条件的元素(比如队列长度不足4),就返回-1。
另外注意到你描述的是“每第3个元素”,如果实际需求是取队首开始的第3、6、9...个元素,我也会在后面附上对应的实现版本。
实现思路
- 队列是有序结构,用索引遍历是最直接的方式(编程里常用0-based索引,和日常说的第N个元素差1,这点要注意)
- 针对你的示例需求:目标元素的0-based索引是
3,6,9...,也就是从索引3开始,每次跳过2个元素(步长为3) - 收集完符合条件的元素后,判断结果是否为空:空则返回-1,否则返回收集到的元素列表(如果需要逗号分隔的字符串格式,直接用
','.join(map(str, result))转换即可)
代码实现(Python)
匹配你示例的版本
这个版本会输出你要的4,7,10结果:
def extract_target_elements(queue): # 从索引3开始,步长3遍历队列,收集元素 result = [queue[i] for i in range(3, len(queue), 3)] # 空结果返回-1,否则返回结果列表 return result if result else -1
匹配你描述的“每第3个元素”版本
如果你的实际需求是取队首开始的第3、6、9...个元素(示例输入应返回[3,6,9]),用这个版本:
def extract_every_third_element(queue): # 从索引2开始(对应日常说的第3个元素),步长3遍历 result = [queue[i] for i in range(2, len(queue), 3)] return result if result else -1
测试案例
测试示例1
input_queue = [1,2,3,4,5,6,7,8,9,10] print(extract_target_elements(input_queue)) # 输出: [4,7,10] print(extract_every_third_element(input_queue)) # 输出: [3,6,9]
测试示例2
input_queue = [1,2] print(extract_target_elements(input_queue)) # 输出: -1 print(extract_every_third_element(input_queue)) # 输出: -1
其他边界测试
input_queue = [1,2,3,4] print(extract_target_elements(input_queue)) # 输出: [4] input_queue = [] print(extract_target_elements(input_queue)) # 输出: -1
内容的提问来源于stack exchange,提问作者Divya
相关产品推荐
相关产品推荐

