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

Kotlin中用lists zip处理影院座位重复预订问题求助

影院座位重复预订解决方案

核心思路

不用重复zip两个列表,直接把已预订的坐标对存在一个Set里就搞定——Set天然不允许重复元素,检查重复的效率也高。

具体实现步骤

  • 第一步:存储已预订座位
    把你用zip生成的坐标对列表转成Set<Pair<Int, Int>>,比如:

    // 假设xList、yList是已有的座位坐标列表,转成不可重复的集合
    val bookedSeats = xList.zip(yList).toSet()
    // 如果需要后续新增预订,就用可变集合
    val mutableBookedSeats = xList.zip(yList).toMutableSet()
    
  • 第二步:检查并拦截重复预订
    当用户输入新的x、y坐标时,拼成Pair(x, y)直接判断是否在已预订集合里:

    fun bookSeat(x: Int, y: Int): Boolean {
        val targetSeat = Pair(x, y)
        return if (mutableBookedSeats.contains(targetSeat)) {
            println("该座位已被预订,请选择其他座位!")
            false
        } else {
            mutableBookedSeats.add(targetSeat)
            println("座位预订成功!")
            true
        }
    }
    
  • 初始数据自动去重
    如果你的x、y初始列表本身就有重复坐标,转成Set的时候会自动剔除重复项:

    val xList = listOf(1, 2, 1)
    val yList = listOf(3, 4, 3)
    val bookedSeats = xList.zip(yList).toSet()
    // 最终集合里只有(1,3)、(2,4)两个坐标
    

为什么不用重复zip?

每次zip两个列表都会生成新的坐标对列表,完全没必要做重复操作。用Set存储已有的坐标对,直接检查新的x、y组合,既简洁又高效。

内容的提问来源于stack exchange,提问作者Nicholas Whynot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:07:02