网易首页 > 网易号 > 正文 申请入驻

文心一言 VS 讯飞星火 VS chatgpt (240)-- 算法导论17.3 6题

0
分享至

六、证明:如何用两个普通的栈实现一个队列(练习10.1-6),使得每个 ENQUEUE 和 DEQUEUE 操作的摊还代价为 O(1) 。练习10.1-6的内容是:说明如何用两个栈实现一个队列,并分析相关队列操作的运行时间。如果要写代码,请用go语言。

文心一言:

要使用两个栈实现一个队列,并使得每个 ENQUEUE 和 DEQUEUE 操作的摊还代价为 O(1),我们可以采用以下策略:

将一个栈(我们称其为栈1)用于输入(ENQUEUE 操作),另一个栈(我们称其为栈2)用于输出(DEQUEUE 操作)。 当需要执行 DEQUEUE 操作时,如果栈2为空,则将栈1中的所有元素逐个弹出并压入栈2中,这样就确保了栈2的栈顶元素是队列中的第一个元素。然后,从栈2中弹出栈顶元素即可。 ENQUEUE 操作则直接压入栈1中。 由于每个元素最多被移动两次(一次从栈1到栈2,一次从栈2中弹出),因此摊还代价是 O(1)。

下面是使用 Go 语言实现的代码示例:

packagemain
import(
"fmt"
"sync"
)
//Queue使用两个栈实现队列
typeQueuestruct{
stack1,stack2[]interface{}
musync.Mutex
}
//Enqueue入队操作
func(q*Queue)Enqueue(iteminterface{}){
q.mu.Lock()
deferq.mu.Unlock()
q.stack1=append(q.stack1,item)
}
//Dequeue出队操作
func(q*Queue)Dequeue()(interface{},bool){
q.mu.Lock()
deferq.mu.Unlock()
iflen(q.stack2)==0{
//如果stack2为空,则将stack1中的所有元素移到stack2中
forlen(q.stack1)>0{
item:=q.stack1[len(q.stack1)-1]
q.stack1=q.stack1[:len(q.stack1)-1]
q.stack2=append(q.stack2,item)
}
}
iflen(q.stack2)==0{
//队列为空
returnnil,false
}
//弹出stack2的栈顶元素
item:=q.stack2[len(q.stack2)-1]
q.stack2=q.stack2[:len(q.stack2)-1]
returnitem,true
}
funcmain(){
q:=&Queue{}
//入队操作
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
//出队操作
ifitem,ok:=q.Dequeue();ok{
fmt.Println("Dequeued:",item)
}
//再次入队和出队
q.Enqueue(4)
ifitem,ok:=q.Dequeue();ok{
fmt.Println("Dequeued:",item)
}
}

在上面的代码中,我们使用了 Go 的 sync.Mutex 来确保并发安全性,这在实际的并发环境中是必须的。如果仅用于学习或单线程环境,可以省略锁的部分。

每次 Enqueue 操作时,我们直接将元素压入 stack1。当 Dequeue 时,如果 stack2 为空,则将 stack1 中的所有元素转移到 stack2 中,然后从 stack2 中弹出栈顶元素。这种策略确保了每个元素最多被移动两次,因此摊还代价为 O(1)。







讯飞星火:

为了实现一个队列,我们可以使用两个栈。我们将这两个栈分别称为stack1和stack2。在执行enqueue操作时,我们将元素压入stack1。在执行dequeue操作时,如果stack2为空,我们将stack1中的所有元素依次弹出并压入stack2,然后从stack2中弹出顶部元素。这样,stack1始终用于存储新元素,而stack2用于存储待出队的元素。

以下是用Go语言实现的代码:

packagemain
import(
"fmt"
)
typeQueuestruct{
stack1[]int
stack2[]int
}
funcNewQueue()*Queue{
return&Queue{}
}
func(q*Queue)Enqueue(valueint){
q.stack1=append(q.stack1,value)
}
func(q*Queue)Dequeue()int{
iflen(q.stack2)==0{
forlen(q.stack1)>0{
top:=q.stack1[len(q.stack1)-1]
q.stack1=q.stack1[:len(q.stack1)-1]
q.stack2=append(q.stack2,top)
}
}
iflen(q.stack2)==0{
panic("队列为空")
}
top:=q.stack2[len(q.stack2)-1]
q.stack2=q.stack2[:len(q.stack2)-1]
returntop
}
funcmain(){
q:=NewQueue()
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
fmt.Println(q.Dequeue())//输出1
fmt.Println(q.Dequeue())//输出2
q.Enqueue(4)
fmt.Println(q.Dequeue())//输出3
fmt.Println(q.Dequeue())//输出4
}

在这个实现中,每个ENQUEUE操作的时间复杂度为O(1),因为只需要将元素压入stack1。DEQUEUE操作的平均时间复杂度也为O(1),因为大多数情况下,我们可以直接从stack2中弹出元素。然而,在stack2为空的情况下,我们需要将stack1中的所有元素依次弹出并压入stack2,此时的时间复杂度为O(n)。但由于摊还代价分析,每个DEQUEUE操作的期望时间复杂度仍为O(1)。





360智脑:

为了用两个栈实现一个队列,并保证每个 ENQUEUE(入队) 和 DEQUEUE(出队)操作的摊还代价为 O(1),我们可以遵循以下步骤:

  1. 1.初始化两个空栈,称之为栈1和栈2。
  2. 2.所有 ENQUEUE 操作都通过栈1执行,即每次入队时,我们都在栈1中 push 元素。
  3. 3.第一次 DEQUEUE 时,如果栈1为空,则将栈2中的元素弹出并 push 到栈1中,然后 pop 栈1的顶部元素作为返回值。
  4. 4.之后的每次 DEQUEUE,直接 pop 栈1的顶部元素作为返回值。

这样,我们就可以用两个栈来模拟一个队列的行为,并且保证了 ENQUEUE 和 DEQUEUE 操作的摊还代价为 O(1)。

以下是用 Go 语言实现上述逻辑的代码示例:

packagemain
import(
"fmt"
)
typeQueuestruct{
stack1[]int
stack2[]int
}
funcNewQueue()*Queue{
return&Queue{}
}
func(q*Queue)Enqueue(elementint){
q.stack1=append(q.stack1,element)
}
func(q*Queue)Dequeue()(int,bool){
iflen(q.stack1)==0&&len(q.stack2)==0{
return0,false//队列为空
}
//如果栈1为空,则从栈2中转移元素到栈1
iflen(q.stack1)==0{
fori:=len(q.stack2);i>0;i--{
q.stack1=append(q.stack1,q.stack2[i-1])
}
q.stack2=nil
}
//弹出栈1的顶部元素
top:=q.stack1[len(q.stack1)-1]
q.stack1=q.stack1[:len(q.stack1)-1]
returntop,true//返回弹出的元素
}
funcmain(){
q:=NewQueue()
//入队操作
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
//出队操作
fmt.Println(q.Dequeue())//输出:1
fmt.Println(q.Dequeue())//输出:2
//再次入队
q.Enqueue(4)
q.Enqueue(5)
//出队操作
fmt.Println(q.Dequeue())//输出:3
fmt.Println(q.Dequeue())//输出:4
//空队列测试
fmt.Println(q.Dequeue())//输出:5
fmt.Println(q.Dequeue())//输出:false
}

在上面的代码中,方法用于入队操作,它将元素添加到栈1中;方法用于出队操作,它首先检查栈1是否为空,若为空则从栈2转移元素到栈1,然后弹出栈1的顶部元素。如果队列为空,方法将返回。

Enqueue

Dequeue

Dequeue

false







智谱清言:

为了使用两个栈来实现一个队列,并保证每个和操作的摊还代价为 O(1),我们可以这样设计:

ENQUEUE

DEQUEUE

  1. 1.栈1用于存储队列的入口处(front)的所有元素。
  2. 2.栈2用于存储队列的出口处(rear)的所有元素。操作:
  3. ENQUEUE
  • •将元素压入栈1(入口栈)。操作:
  • DEQUEUE
  • •如果栈2不为空,则直接从栈2弹出元素,这是最常见情况,因为队列的出队操作总是从出口栈进行。
  • •如果栈2为空,则将栈1的所有元素依次弹出并压入栈2,然后从栈2弹出元素。这样做是为了保证出口栈的操作仍然为 O(1)。 这样设计的队列,在大多数情况下操作的代价为 O(1),但在栈1的所有元素都需要转移到栈2的过程中,操作的代价会是 O(n),其中 n 是栈1中的元素数量。然而,由于这个转移操作只会在操作执行到栈1为空时发生,且每个元素只会被转移一次,因此这个操作的摊还代价(amortized cost)仍然是 O(1)。 下面是用 Go 语言实现的两个栈队列:
  • DEQUEUE
  • DEQUEUE
  • DEQUEUE

packagemain
import(
"fmt"
)
typeMyQueuestruct{
stack1[]int
stack2[]int
}
funcConstructor()MyQueue{
returnMyQueue{}
}
func(this*MyQueue)Enqueue(valint){
this.stack1=append(this.stack1,val)
}
func(this*MyQueue)Dequeue()int{
iflen(this.stack2)==0{
iflen(this.stack1)==0{
return-1
}
//将stack1的所有元素转移到stack2
forlen(this.stack1)>0{
top:=this.stack1[len(this.stack1)-1]
this.stack1=this.stack1[:len(this.stack1)-1]
this.stack2=append(this.stack2,top)
}
}
//从stack2弹出元素
top:=this.stack2[len(this.stack2)-1]
this.stack2=this.stack2[:len(this.stack2)-1]
returntop
}
funcmain(){
obj:=Constructor()
obj.Enqueue(1)
obj.Enqueue(2)
obj.Enqueue(3)
fmt.Println(obj.Dequeue())//返回1
fmt.Println(obj.Dequeue())//返回2
obj.Enqueue(4)
fmt.Println(obj.Dequeue())//返回3
fmt.Println(obj.Dequeue())//返回4
}

这段代码实现了用两个栈来模拟队列的功能,并保证了和操作的摊还代价为 O(1)。

ENQUEUE

DEQUEUE







天工:

要使用两个栈实现一个队列,我们可以采用以下策略:

  1. 1.当执行操作时,直接将新元素推送到入栈(stackIn)中。
  2. ENQUEUE
  3. 2.当执行操作时,检查出栈(stackOut)是否为空:
  4. DEQUEUE
    • •如果不为空,直接从出栈中弹出元素作为队列的输出;
    • •如果为空,则需要将入栈中的所有元素弹出并压入出栈,然后从出栈中弹出元素作为队列的输出。 这样,操作总是在入栈中进行,时间复杂度为 O(1);而操作虽然可能涉及将入栈中的所有元素移到出栈中,但这种情况只发生在出栈为空时,即在连续的操作中,第一次的摊还代价为 O(n),随后的每一次都是 O(1)。因此,操作的摊还代价也为 O(1)。 下面是使用 Go 语言实现的代码示例:
  • ENQUEUE
  • DEQUEUE
  • DEQUEUE
  • DEQUEUE
  • DEQUEUE
  • DEQUEUE

packagemain
import"fmt"
typeStack[]int
func(s*Stack)Push(vint){
*s=append(*s,v)
}
func(s*Stack)Pop()int{
iflen(*s)==0{
panic("popfromemptystack")
}
v:=(*s)[len(*s)-1]
*s=(*s)[:len(*s)-1]
returnv
}
typeQueuestruct{
inStack
outStack
}
func(q*Queue)Enqueue(vint){
q.in.Push(v)
}
func(q*Queue)Dequeue()int{
ifq.out.IsEmpty(){
for!q.in.IsEmpty(){
q.out.Push(q.in.Pop())
}
}
returnq.out.Pop()
}
func(sStack)IsEmpty()bool{
returnlen(s)==0
}
funcmain(){
queue:=Queue{}
queue.Enqueue(1)
queue.Enqueue(2)
fmt.Println(queue.Dequeue())//输出:1
fmt.Println(queue.Dequeue())//输出:2
}

在上述代码中,我们定义了类型来表示栈,并实现了和方法。然后定义了类型,包含两个字段和。方法将新元素压入入栈中,方法从出栈中弹出元素。如果出栈为空,它会将入栈中的所有元素移到出栈中。最后,在函数中,我们创建了一个实例,并对其进行了和操作的测试。

Stack

Push

Pop

Queue

Stack

in

out

Enqueue

Dequeue

main

Queue

ENQUEUE

DEQUEUE







灵小智:

要实现每个 ENQUEUE 和 DEQUEUE 操作的摊还代价为 O(1),可以使用两个栈来模拟队列。以下是 Go 语言的代码实现:

packagemain
import(
"errors"
"fmt"
)
typeQueuestruct{
stack1[]int
stack2[]int
}
func(q*Queue)Enqueue(xint){
//将元素压入stack1
q.stack1=append(q.stack1,x)
}
func(q*Queue)Dequeue()(int,error){
iflen(q.stack2)==0{
iflen(q.stack1)==0{
return0,errors.New("queueisempty")
}
//将stack1中的元素逐个弹出并压入stack2
forlen(q.stack1)>0{
n:=len(q.stack1)-1
q.stack2=append(q.stack2,q.stack1[n])
q.stack1=q.stack1[:n]
}
}
//弹出stack2的栈顶元素
n:=len(q.stack2)-1
x:=q.stack2[n]
q.stack2=q.stack2[:n]
returnx,nil
}
funcmain(){
q:=Queue{}
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
fori:=0;i<3;i++{
x,err:=q.Dequeue()
iferr!=nil{
fmt.Println(err)
}else{
fmt.Println("Dequeued:",x)
}
}
}

在这个实现中,当执行 DEQUEUE 操作时,如果 stack2 不为空,则直接从 stack2 弹出栈顶元素;如果 stack2 为空,则将 stack1 中的元素逐个弹出并压入 stack2,然后再从 stack2 弹出栈顶元素。这样可以保证每个 DEQUEUE 操作的摊还代价为 O(1)。 ENQUEUE 操作的摊还代价也为 O(1),因为只需要将元素压入 stack1。





chatgpt:

下面是用两个栈实现队列的示例代码,采用Go语言编写:

packagemain
import"fmt"
typeMyQueuestruct{
stack1[]int
stack2[]int
}
func(q*MyQueue)Enqueue(xint){
q.stack1=append(q.stack1,x)
}
func(q*MyQueue)Dequeue()int{
iflen(q.stack2)==0{
forlen(q.stack1)>0{
n:=len(q.stack1)
q.stack2=append(q.stack2,q.stack1[n-1])
q.stack1=q.stack1[:n-1]
}
}
iflen(q.stack2)==0{
fmt.Println("Queueisempty")
return-1
}
x:=q.stack2[len(q.stack2)-1]
q.stack2=q.stack2[:len(q.stack2)-1]
returnx
}
funcmain(){
q:=&MyQueue{}
q.Enqueue(10)
q.Enqueue(20)
q.Enqueue(30)
fmt.Println("Dequeued:",q.Dequeue())//Output:10
fmt.Println("Dequeued:",q.Dequeue())//Output:20
q.Enqueue(40)
fmt.Println("Dequeued:",q.Dequeue())//Output:30
}

这个实现利用了两个栈和来模拟队列。当执行入队操作()时,将元素压入中。当执行出队操作()时,先检查是否为空,如果为空,则将中的元素逐个弹出并压入,然后从弹出队首元素。

stack1

stack2

Enqueue

stack1

Dequeue

stack2

stack1

stack2

stack2

这种实现方式下,每个 ENQUEUE 和 DEQUEUE 操作的摊还代价为 O(1)。





kimi:

为了用两个栈实现一个队列,并使得每个 ENQUEUE(入队)和 DEQUEUE(出队)操作的摊还代价为 O(1),我们可以采用以下策略:

  1. 1.入队(ENQUEUE)操作:直接将元素推入第一个栈(称为入栈)。
  2. 2.出队(DEQUEUE)操作:如果第二个栈(称为出栈)非空,则直接从出栈弹出元素。如果出栈为空,那么将入栈中的所有元素依次弹出并压入出栈,然后从出栈弹出一个元素。

这种实现方式中,入队操作的时间复杂度始终是 O(1)。而出队操作的时间复杂度是摊还 O(1),因为每个元素被压入入栈后,最多被压出一次出栈,所以平均每个出队操作摊还的代价是 O(1)。

下面是使用 Go 语言实现的示例代码:

packagemain
import(
"fmt"
"container/list"
)
typeQueuestruct{
enqueueStack*list.List//用于入队的栈
dequeueStack*list.List//用于出队的栈
}
funcNewQueue()*Queue{
return&Queue{
enqueueStack:list.New(),
dequeueStack:list.New(),
}
}
func(q*Queue)Enqueue(valueinterface{}){
q.enqueueStack.PushBack(value)
}
func(q*Queue)Dequeue()(interface{},error){
ifq.dequeueStack.Len()==0{
//如果出栈为空,那么将入栈中的所有元素移动到出栈
forq.enqueueStack.Len()>0{
q.dequeueStack.PushBack(q.enqueueStack.Remove(q.enqueueStack.Back()).Value)
}
}
ifq.dequeueStack.Len()==0{
//如果出栈仍然为空,说明队列为空
returnnil,fmt.Errorf("queueisempty")
}
returnq.dequeueStack.Remove(q.dequeueStack.Back()).Value,nil
}
funcmain(){
q:=NewQueue()
//入队操作
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
//出队操作
fmt.Println("Dequeued:",q.Dequeue())
fmt.Println("Dequeued:",q.Dequeue())
//继续入队操作
q.Enqueue(4)
q.Enqueue(5)
//继续出队操作
fmt.Println("Dequeued:",q.Dequeue())
fmt.Println("Dequeued:",q.Dequeue())
}

在这个实现中,我们使用了两个类型的栈来实现队列。是 Go 语言标准库中的一个双向链表,它提供了 O(1) 时间复杂度的 PushBack 和 Remove 操作,适用于实现栈。

list.List

list.List

container/list

方法用于入队操作,它直接将元素推入。方法用于出队操作,如果为空,则将中的所有元素移动到,然后弹出并返回的元素。

Enqueue

enqueueStack

Dequeue

dequeueStack

enqueueStack

dequeueStack

dequeueStack

通过这种方式,我们实现了一个队列,其中每个 ENQUEUE 和 DEQUEUE 操作的摊还代价为 O(1)。







混元:

为了实现这个要求,我们可以使用两个栈,一个主栈(stack1)用于存储新加入的元素,另一个辅助栈(stack2)用于在执行 dequeue 操作时将元素重新排序

以下是使用 Go 语言实现的代码:

packagemain
import(
"fmt"
)
typeQueuestruct{
stack1[]int
stack2[]int
}
func(q*Queue)Enqueue(valueint){
q.stack1=append(q.stack1,value)
}
func(q*Queue)Dequeue()int{
iflen(q.stack2)==0{
forlen(q.stack1)>0{
top:=q.stack1[len(q.stack1)-1]
q.stack1=q.stack1[:len(q.stack1)-1]
q.stack2=append(q.stack2,top)
}
}
iflen(q.stack2)==0{
panic("Queueisempty")
}
value:=q.stack2[len(q.stack2)-1]
q.stack2=q.stack2[:len(q.stack2)-1]
returnvalue
}
funcmain(){
queue:=&Queue{}
queue.Enqueue(1)
queue.Enqueue(2)
queue.Enqueue(3)
fmt.Println(queue.Dequeue())//输出1
fmt.Println(queue.Dequeue())//输出2
queue.Enqueue(4)
fmt.Println(queue.Dequeue())//输出3
fmt.Println(queue.Dequeue())//输出4
}

在这个实现中,我们使用两个栈(切片)来模拟队列。Enqueue 操作直接将元素添加到 stack1 的顶部,Dequeue 操作则从 stack2 的顶部移除元素。如果 stack2 为空,我们将 stack1 中的所有元素依次弹出并压入 stack2,然后从 stack2 的顶部移除元素。这样,我们可以保证每个元素只被移动一次,从而实现 O(1) 的摊还代价。

需要注意的是,这个实现并不是严格的 O(1) 时间复杂度,因为在极端情况下(例如,连续进行 n 次 enqueue 操作,然后进行 dequeue 操作),Dequeue 操作可能需要 O(n) 的时间复杂度。然而,摊还代价分析可以证明每个元素只被移动一次,因此总体时间复杂度仍然是 O(1)。

摊还代价分析:

  • •对于每个 enqueue 操作,我们将元素添加到 stack1 的顶部,时间复杂度为 O(1)。
  • •对于每个 dequeue 操作,我们可能需要将 stack1 中的所有元素移动到 stack2,时间复杂度为 O(n)。但是,由于每个元素只会被移动一次,因此总体时间复杂度仍然是 O(1)。

因此,我们可以说这个实现满足了题目要求的每个 ENQUEUE 和 DEQUEUE 操作的摊还代价为 O(1)。







声明:内容由AI生成

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
普通人一辈子的存款天花板是多少?网友:就是100万,别杠!

普通人一辈子的存款天花板是多少?网友:就是100万,别杠!

娱乐圈的大爆炸
2024-05-29 11:36:57
福建女子向清华才子炫耀1亿家产,被装铁桶沉晋江,5天后捞出

福建女子向清华才子炫耀1亿家产,被装铁桶沉晋江,5天后捞出

一场奇遇日记
2024-05-23 19:10:42
比利时向乌克兰捐赠30架F-16——乌克兰获得F-16总数增至85架

比利时向乌克兰捐赠30架F-16——乌克兰获得F-16总数增至85架

桂系007
2024-05-28 21:20:10
夏天,打死都不要买的4种蔬菜,不仅没有营养,还会伤身体。

夏天,打死都不要买的4种蔬菜,不仅没有营养,还会伤身体。

今日养生之道
2024-05-28 16:32:05
记者:周冠宇将在近两周内主动宣布离开Kick索伯车队

记者:周冠宇将在近两周内主动宣布离开Kick索伯车队

直播吧
2024-05-29 16:46:13
庆余年2:叶轻眉遗言曝光!原来她一直没告诉范闲和庆帝这个秘密

庆余年2:叶轻眉遗言曝光!原来她一直没告诉范闲和庆帝这个秘密

水姐聊剧H
2024-05-29 12:44:03
四川女孩相亲,母亲得知男子二婚带娃被气到,媒人:他给20万彩礼

四川女孩相亲,母亲得知男子二婚带娃被气到,媒人:他给20万彩礼

雅清故事汇
2024-05-28 16:46:07
哈斯勒姆:詹姆斯是我见过最精明的商人 他留湖人是一个商业决策

哈斯勒姆:詹姆斯是我见过最精明的商人 他留湖人是一个商业决策

直播吧
2024-05-29 13:13:49
汪小菲替全场顾客买单,张兰:我酸辣粉一天卖5万单不够他免单!

汪小菲替全场顾客买单,张兰:我酸辣粉一天卖5万单不够他免单!

毒舌嬷嬷
2024-05-29 08:37:48
LOL历史最贵皮肤诞生!Faker阿狸售价3600,玩家吐槽:谁买谁蠢

LOL历史最贵皮肤诞生!Faker阿狸售价3600,玩家吐槽:谁买谁蠢

风尘Game
2024-05-29 08:47:10
朱琳出席活动时的留影,你敢相信这是年过七旬的状态?

朱琳出席活动时的留影,你敢相信这是年过七旬的状态?

视点历史
2024-05-27 11:42:31
中国五级政府体制规模庞大,机构数量及人员规模详解

中国五级政府体制规模庞大,机构数量及人员规模详解

窝在家里做文化
2024-05-27 10:32:28
马斯克,突放“超级大招”!

马斯克,突放“超级大招”!

每日经济新闻
2024-05-27 11:14:11
俄军最新战报:俄军在恰索夫亚尔方向大胜,乌军一昼夜损失1760人

俄军最新战报:俄军在恰索夫亚尔方向大胜,乌军一昼夜损失1760人

战域笔墨
2024-05-29 11:10:37
灭了三大文明古国的雅利安人,前来华夏挑衅,被商朝扔进了殉葬坑

灭了三大文明古国的雅利安人,前来华夏挑衅,被商朝扔进了殉葬坑

文史道
2024-05-27 06:45:02
周鸿祎说巴黎奥运会徽撞脸陈鲁豫:看这个会徽,越看越像陈鲁豫

周鸿祎说巴黎奥运会徽撞脸陈鲁豫:看这个会徽,越看越像陈鲁豫

刺头体育
2024-05-29 10:29:26
20岁留学生坠亡内幕:交过3任男友,事后现任登录死者账号发信息

20岁留学生坠亡内幕:交过3任男友,事后现任登录死者账号发信息

洛洛女巫
2024-05-29 11:26:20
C919国产动力,CJ1000A发动机召开适航取证大会,关键就在这一步

C919国产动力,CJ1000A发动机召开适航取证大会,关键就在这一步

早日发达
2024-05-29 14:05:06
岛国片中那些剧情佳作,历史高分点评回顾,女主人美有气质

岛国片中那些剧情佳作,历史高分点评回顾,女主人美有气质

不二砖家
2024-05-29 12:21:42
说G6再见这种自信的来源是什么?华子:总不能说G5我们要输吧

说G6再见这种自信的来源是什么?华子:总不能说G5我们要输吧

直播吧
2024-05-29 18:01:05
2024-05-29 18:26:44
moonfdd
moonfdd
福大大架构师每日一题
405文章数 3关注度
往期回顾 全部

科技要闻

王传福再放狠话,燃油车要成“非主流”

头条要闻

安徽全椒县"拿茅台比方污水"局长被免职

头条要闻

安徽全椒县"拿茅台比方污水"局长被免职

体育要闻

巴黎主席向皇马索要8000万 佛爷:1分不给

娱乐要闻

张若昀怎么剧外比剧内更惨兮兮…

财经要闻

东方通收购藏雷 花6亿买来"业绩变脸"

汽车要闻

新哈弗H6苦练内功 向燃油车绝缘智能SAY NO

态度原创

教育
房产
本地
公开课
军事航空

教育要闻

老师骄傲夸夸 男孩字越写越好

房产要闻

有点猛!最新房价:海南每㎡跌了2000多!

本地新闻

食味印象|歙县限定!枇杷味儿的清甜初夏

公开课

近视只是视力差?小心并发症

军事要闻

美国一架F-35坠毁 飞行员弹射逃生被送医

无障碍浏览 进入关怀版