【 以下文字转载自 NewExpress 讨论区 】
发信人: foxknox (3爷), 信区: NewExpress
标 题: Deepseek-R1:8b VS LLAMA3.2:3b实际代码比较
发信站: 水木社区 (Wed Jan 22 11:17:16 2025), 站内
说明:
1、Deepseek-R1:8b给出很多文字,包括思考过程,设计思路,具体设计,结构与算法描述,代码,解释等等。暂时不知道本地怎么关闭他的深度思考开关。也挺好,对于代码的理解和问题的解决有个学习过程。
2、llama3.2:3b比较直爽给出思路就上代码。
3、llama3.2:3b在我的本地运行比Deepseek-R1:8b快多了,一直是我喜欢的本地LLM。
题目:
假设有这样一个拥有三个操作的队列:
1.EnQueue(v):将v加入队列中
2.DeQueue:使队列中的队首元素删除并返回此元素
3.MaxElement:返回队列中的最大元素
请设计一种数据结构和算法,让MaxElement操作的时间复杂度尽可能地低。
Deepseek-R1:8b的代码:
import heapq
class MaxElementQueue:
def __init__(self):
self.heap = [] # 使用负值模拟最大堆
self.left_ptr = 0
self.max_value = -float('inf')
def insert(self, value):
if value > self.max_value:
self.max_value = value
heapq.heappush(self.heap, -value)
self.right_ptr += 1
def dequeue_left(self):
while self.left_ptr < len(self.heap) and self.heap[0] != -self.max_value:
if self.left_ptr == 0:
current_max = self.max_value
else:
current_max = max(current_max, self.heap[self.left_ptr])
self.left_ptr += 1
if self.left_ptr >= len(self.heap):
return None
val = -heapq.heappop(self(heap))
if val == self.max_value:
self.max_value = -self.heap[0]
else:
# 需要重新寻找新的最大值
new_max = max(val, self.max_value)
self.max_value = new_max
def get_max(self):
while self.left_ptr < len(self.heap) and self.heap[self.left_ptr] != -self.max_value:
if self.left_ptr == 0:
current_max = self.max_value
else:
current_max = max(current_max, self.heap[self.left_ptr])
self.left_ptr += 1
return self.max_value
llama3.2:3b的代码:
from collections import deque
class Queue:
def __init__(self):
self.deque = deque()
# EnQueue(v)
def enqueue(self, v):
self.deque.append(v)
# DeQueue
def dequeue(self):
if len(self.deque) > 0:
return self.deque.popleft()
else:
return None
# MaxElement
def max_element(self):
if len(self.deque) == 0:
return None
else:
return max(self.deque)
# 例子
queue = Queue()
queue.enqueue(1)
queue.enqueue(5)
queue.enqueue(3)
print(queue.max_element()) # prints: 5
queue.dequeue()
print(queue.max_element()) # prints: 5
--
FROM 36.161.235.*