华为OD机试真题2023_Swift_100_最小的调整次数

2023-03-14  本文已影响0人  雾中探雪
// 最小的调整次数
    func HW2023020() {
        var listArr: [String] = []
        // 测试用例
//        listArr = ["head add 1", "remove", "tail add 2", "head add 3", "remove", "remove"]
//        listArr = ["tail add 6", "head add 4", "tail add 5", "head add 1", "remove", "tail add 2","remove", "remove", "head add 3", "remove", "remove"]
        
        // 开始代码
        let _ = Int(readLine()!)!
        while let line = readLine() {
            listArr.append(String(line))
        }
        
        var index = 1   // 删除的整数,相等于索引
        var res = 0     // 变换次数
        var deque: [Int] = []
        for str in listArr {
            let tempArr = str.components(separatedBy: " ")
            if tempArr.count == 1 { // 移除
                if Int(deque.first!) != index {// 当前数字不符合要求
                    deque = deque.sorted()
                    res += 1
                }
                deque.removeFirst()
                index += 1
            }else {
                if tempArr[0] == "head" {
                    deque.insert(Int(tempArr[2])!, at: 0) //  头部添加
                }else {
                    deque.append(Int(tempArr[2])!)        //  尾部添加
                }
            }
        }
        print(res)
    }
上一篇 下一篇

猜你喜欢

热点阅读