ChatGPT API 的 Java 简单使用 博客 ChatGPT API 的 Java 简单使用 引言:想着openai送的额度不能浪费,就使用OKHTTP框架做了一个简单的控制台对话实现 请求部分 /** * 发送消息请求 * @param msgList 消息列表,包含历史对话 * @param delay 等待回
操作系统导论 笔记 笔记 操作系统导论 笔记 第二章 操作系统介绍 有一类软件负责让程序运行变得容易(甚至允许你同时运行多个程序),允许程序共享内存,让程序能够与设备交互,以及其他类似的工作。这类软件称为操作系统(Operating System, OS) 要做到这一点,操作系统主要利用一种通用的技术,我们称之为虚拟化。 也
Java设计模式 笔记 笔记 Java设计模式 笔记 UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息 UML从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图
KMP 算法 算法 KMP 算法 简介 Knuth-Morris-Pratt字符串查找算法(简称为KMP算法)可在一个字符串S内查找一个词W的出现位置。一个词在不匹配时本身就包含足够的信息来确定下一个匹配可能的开始位置,此算法利用这一特性以避免重新检查先前配对的字符。——引自维基 在模式匹配问题中,KMP算法比Mana
前缀和 LeetCode 560.和为K的子数组 算法 前缀和 LeetCode 560.和为K的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的 个数 。 示例 1: 输入:nums = [1,1,1], k = 2 输出:2 示例 2: 输入:nums = [1,2,3], k = 3 输出:2
LeetCode 312.戳气球 算法 LeetCode 312.戳气球 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。 这里的 i - 1 和
Manacher 算法 算法 Manacher's Algorithm 马拉车算法 马拉车算法 Manacher‘s Algorithm 是用来查找一个字符串的最长回文子串的线性方法,由一个叫Manacher的人在1975年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性。 首先我们解决下奇数和偶数的问题,在每个字符间插
LeetCode647. 回文子串 算法 LeetCode647. 回文子串 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例1 输入:s
LeetCode437. 路径总和 III 算法 LeetCode437. 路径总和 III 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例1: 输入:
Brian Kernighan 算法 算法 Brian Kernighan 算法 对任何一个数 n ,n & ( n − 1 ) 的结果是n 的比特位最右端的 1 变为 0 的结果,可以用于清除二进制数中最右侧的 1。 例如: n = 12 Dec = 1100 Bin n - 1 = 11 Dec = 1011 Bin n & (n - 1