You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写逻辑:提取队列从前往后每第3个元素至输出队列,无则返回-1

如何从队列中提取指定间隔的元素(匹配你的示例需求)

嘿,我来帮你解决这个问题!先结合你的示例把需求掰扯清楚:

从输入队列的队首到队尾,提取第4、7、10...个元素(也就是从第4个开始,每数3个元素取一个);如果没有符合条件的元素(比如队列长度不足4),就返回-1。

另外注意到你描述的是“每第3个元素”,如果实际需求是取队首开始的第3、6、9...个元素,我也会在后面附上对应的实现版本。


实现思路

  1. 队列是有序结构,用索引遍历是最直接的方式(编程里常用0-based索引,和日常说的第N个元素差1,这点要注意)
  2. 针对你的示例需求:目标元素的0-based索引是3,6,9...,也就是从索引3开始,每次跳过2个元素(步长为3)
  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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:45:47