406. Queue Reconstruction by Height (Medium)(kotlin)

 fun reconstructQueue(people: Array<IntArray>): List<IntArray> {


            //排序 身高从搞到底
        Arrays.sort(people) { o1, o2 ->
            if (o1[0] != o2[0]) -o1[0] + o2[0] else o1[1] - o2[1]

        }

        val res: LinkedList<IntArray> = LinkedList()
        for (cur in people) {
            res.add(cur[1], cur)
            for (e in res){
                print("people cur :: ${Arrays.toString(e)}  .. ")
            }
            println()
        }
        return res.toList()
    }

题解思路照抄自::https://leetcode-cn.com/problems/queue-reconstruction-by-height/solution/gen-ju-shen-gao-zhong-jian-dui-lie-by-leetcode/

在Python中,`threading`库提供的`queue`和`multiprocessing`库提供的`Queue`都是用于线程间通信的数据结构,它们的主要目的是在多线程或多进程环境中同步数据传输。以下是两者的一些异同: **相似点:** 1. **线程安全**:两者都保证了队列内部的操作在并发环境下的安全性,避免了数据竞争。 2. **阻塞操作**:当试图从空队列中获取元素时,`queue`和`Queue`都会阻塞直到有新的数据加入。 3. **共享状态**:两个队列都无法直接让进程间共享状态,因为它们属于各自独立的内存空间。 **不同点:** 1. **进程隔离**:`multiprocessing.Queue`创建的是进程间的通信机制,适合在多进程环境下使用。而`threading.Queue`仅限于同一进程内的线程间。 2. **性能**:由于`multiprocessing.Queue`需要在进程间复制数据,因此它的性能通常不如`threading.Queue`,特别是在大量数据交换的情况下。 3. **同步粒度**:`threading.Queue`更适合轻量级的线程间通信,而`multiprocessing.Queue`则适用于更复杂的跨进程通信场景。 4. **使用限制**:`multiprocessing`库要求数据可以序列化,这意味着不是所有类型的对象都能直接放入`Queue`。`threading.Queue`不受此限制。 **示例代码(简化的版本):** ```python import threading from queue import Queue import multiprocessing # 线程队列示例 q_thread = Queue() # 进程队列示例 q_process = multiprocessing.Queue() # ... 线程和进程使用队列进行数据传递 ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值