Hilda

「离开世界之前 一切都是过程」

ollama工具-下载安装快速上手

介绍本地大模型运行器Ollama,说明了如何安装、通过命令行下载并运行Gemma等模型进行交互,以及如何列出、删除模型。还演示了直接提问、查看效率和使用llava分析图片功能

简单来说Ollama就是一个大模型的管理平台,“LLM 运行器” 或 “本地 LLM 管理器” Ollama 是一个基于 Go 语言开发的简单易用的本地大语言模型运行框架。可以将其类比为 docker,事实上它也的确制定了类 docker 的一种模型应用标准 在管理模型的同时,它还基于 Go 语言中的 Web 框架 gin提供了一些 Api 接口,让你能够像跟 OpenAI...

026 哈希表,有序表和比较器的用法

哈希表(集):O(1)操作依赖hashCode/equals;有序表(集):O(log n)操作依赖比较器维护顺序。介绍根据值/地址作键、数组替代哈希表场景、比较器定制和字典序概念。

概览: 前置知识:无 提醒:讲解虽然用的java语言,但是任何语言都有对等的概念 提醒:后续有专门的章节来详解哈希函数、有序表,这节课就是常规用法展示 哈希表的用法(认为是集合,根据值来做key 或者 根据内存地址做key) HashSet和HashMap原理一样,有无伴随数据的区别 增、删、改、查时间为O(1),但是大常数 所以当key的范围是固定的、可控的情况下,可以用...

java基础(2) 实现hashCode方法的通用约定

hashCode的通用约定确保哈希表等数据结构能正确运行:首先,如果两个对象通过equals方法比较是相等的,它们的hashCode必须相同;其次,只要用于equals比较的对象信息未变,单次程序运行中同一对象的hashCode必须保持一致;最后,虽然不强制要求,但为了提高性能,不相等的对象应尽量产生不同的hashCode以减少哈希冲突。

实现hashCode方法的通用约定 在应用程序的执行期间,只要对象的equals方法的比较操作所用到的信息没有被修改,那么对这个同一对象调用多次,hashCode方法必须始终如一地返回同一个整数。在同一个应用程序的多次执行过程中,每次执行所返回的整数可以不一致。 如果两个对象根据equals(Object)方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode方...

025 堆结构与堆排序

堆是数组实现的完全二叉树,核心操作为向上(heapInsert)和向下(heapify)调整(O(log n))。堆排序先建堆(O(n)或O(n log n)),再交换堆顶并调整。整体时间复杂度O(n log n),空间O(1)。堆结构本身比堆排序更有用。

概览: 前置知识:无 堆结构 完全二叉树和数组前缀范围来对应,大小,单独的变量size来控制 i的父亲节点:(i-1)/2,i的左孩子:i*2 + 1,i的右孩子:i*2 + 2 堆的定义(大根堆、小根堆),本节课讲解按照大根堆来讲解,小根堆是同理的。 堆的调整:heapInsert(向上调整)、heapify(向下调整) heapInsert、heapify方法的单次调用...

力扣2607 使子数组元素和相等

优化

2607. 使子数组元素和相等 这道题本身比较难,需要掌握裴蜀定理。 我今天想到的优化就是把原先数组排序找中位数,直接变成只寻找中位数(利用最近学到的寻找kth大的数来解决,随机选择的思想),优化找中位数的这一步的时间复杂度(时间复杂度这一步做到O(N),N不是原数组的大小,而是temp数组的大小) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17...

024 随机选择算法,BFPRT算法

本博客讲解了在无序数组中寻找第K大元素的两种方法:随机选择算法和BFPRT算法。随机选择算法基于快排思想,期望时间复杂度为O(n),但证明较复杂。BFPRT算法通过选取“中位数的中位数”作为pivot,保证最坏情况下时间复杂度也为O(n),但实现稍复杂。博客提供了两种算法的Java代码,并强调BFPRT算法的意义在于其规避最坏情况,优化算法的思想。

前置知识:讲解023-随机快速排序 笔记 下面的我是指左老师本人 本节视频链接 本节leetcode链接:https://leetcode.cn/problems/xx4gT2/description/ 本题与主站 215 题相同: https://leetcode-cn.com/problems/kth-largest-element-in-an-array/...

018 二叉树遍历的非递归方法和复杂度分析

本文总结了用栈实现二叉树的三种遍历方式:先序、中序和后序。先序遍历用栈记录节点,先压右子节点再压左子节点。中序遍历利用栈模拟递归,访问左子树为空的节点。后序遍历可用两个栈(易理解,空间O(n))或一个栈(空间O(h),更复杂)实现。 遍历的时间复杂度为O(n),空间复杂度通常为O(h),Morris遍历可实现O(1)空间复杂度。

前置知识:二叉树、先序、中序、后序、栈 关于栈的笔记,整理如下: 013【入门】队列和栈-链表、数组实现 014【入门】队列和栈入门题目-栈和队列相互实现 015 最小栈-力扣155 建议:不要跳过 1)用栈实现二叉树先序遍历 2)用栈实现二叉树中序遍历 3)用两个栈实现二叉树后序遍历,好写但是不推荐,因为需要收集所有节点,最后逆序弹出,额外空间复杂度...

016 双端队列-力扣641-双链表和固定数组实现

这篇博客介绍了循环双端队列的2种实现方式:双链表LinkedList和固定数组。双链表(自己实现)实现速度较快,但需手动编写节点类;LinkedList实现简单,但效率稍逊;固定数组实现适用于已知队列大小上限的情况,通过取模运算或等价逻辑循环利用数组空间。选择哪种实现取决于具体需求和性能考量。

641. 设计循环双端队列 1 双端队列介绍 既能头出也能头入,既能尾出也能尾入。 2 双链表实现双端队列 我自己预先写了一个解法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 4...

015 最小栈-力扣155

实现常数时间获取最小值的栈(MinStack)。主流方法是维护一个辅助栈记录每个位置的最小值,保证getMin()的O(1)复杂度。文章展示了基于Java内置栈、数组以及单链表三种实现方式,链表解法每个节点额外存储当前最小值。

概览: 155. 最小栈 力扣155. 最小栈 155. 最小栈 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶...

014【入门】队列和栈入门题目-栈和队列相互实现

本篇介绍了如何用栈模拟队列(均摊O(1))和用队列模拟栈。栈模拟队列使用双栈倒数据,需注意倒数据时机和完整性。队列模拟栈,可用双队列或单队列实现,单队列每次push时需将之前元素重排。双端队列ArrayDeque也可高效实现栈。

概览 用栈实现队列 题目是:232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empty(...