题解 | #会话列表#

会话列表

https://www.nowcoder.com/practice/0f52adb3946249f9bb63d964658b2691

package main

import (
    "fmt"
)

func main() {
    var t int
    fmt.Scan(&t)
    var n int
    for t>0{
        fmt.Scan(&n)
        var x int
        stk1,stk2:=[]int{},[]int{}
        cnt:=map[int]int{}
        for n>0{
            fmt.Scan(&x)
            if _,ok:=cnt[x];ok{
			  //用两个栈来维护会话列表
                for stk1[len(stk1)-1]!=x{
                    stk2=append(stk2,stk1[len(stk1)-1])
                    stk1=stk1[:len(stk1)-1]
                }
                stk1=append([]int{stk1[len(stk1)-1]},stk1[:len(stk1)-1]...)
                for len(stk2)>0{
                    stk1=append(stk1,stk2[len(stk2)-1])
                    stk2=stk2[:len(stk2)-1]
                }
            }else{
                stk1=append([]int{x},stk1...)
                cnt[x]++
            }
            n--
        }
        for _,x:=range stk1{
            fmt.Printf("%v ",x)
        }
        fmt.Println()
        t--
    }
}

全部评论

相关推荐

LemontreeN:有的兄弟有的我今天一天面了五场,4个二面一个hr面
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-19 13:40
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务