234. 回文链表——palindrome-linked-list给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
示例 1:
12输入:head = [1,2,2,1]输出:true
示例 2:
12输入:head = [1,2]输出:false
提示:
链表中节点数目在范围[1, 105] 内
0 <= Node.val <= 9
我的正确答案快慢指针找中点 + 栈存前半部分
123456789101112131415161718192021222324252627282930class Solution { public boolean isPalindrome(ListNode head) { if (head == null) return true; // 空链表是回文 ListNode fast = head; ListNode slow = head; Deque<Integer> ...
226. 翻转二叉树——invert-binary-tree给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
示例 1:
12输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]
示例 2:
12输入:root = [2,1,3]输出:[2,3,1]
示例 3:
12输入:root = []输出:[]
提示:
树中节点数目范围在 [0, 100] 内
-100 <= Node.val <= 100
方法:递归思路与算法
这是一道很经典的二叉树问题。显然,我们从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。如果当前遍历到的节点 root 的左右两棵子树都已经翻转,那么我们只需要交换两棵子树的位置,即可完成以 root 为根节点的整棵子树的翻转。
代码
123456789101112class Solution { public TreeNode invertTree(TreeNode root) { if (root == null) { ...
206. 反转链表——reverse-linked-list给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
12输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]
示例 2:
12输入:head = [1,2]输出:[2,1]
示例 3:
12输入:head = []输出:[]
提示:
链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000
我的答案
不到一分钟就写出来了,说明之前写数据结构C++的PTA作业还是有用的
1234567891011121314class Solution { public ListNode reverseList(ListNode head) { ListNode curr = head; ListNode prev = null; ListNode next = null; while (curr != null) { ...
169. 多数元素——majority-element给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
12输入:nums = [3,2,3]输出:3
示例 2:
12输入:nums = [2,2,1,1,1,2,2]输出:2
提示:
n == nums.length
1 <= n <= 5 * 104
-109 <= nums[i] <= 109
输入保证数组中一定有一个多数元素。
这题我想到的是既然既要存数字又要存出现次数,肯定得用一个类封装一下,里面有数字的值和出现次数:
我的错误代码(写不下去了)123456789101112131415161718192021class elem { int appearTime = 0; int num; elem(int num) { this.num = num; } void ad ...
title: (LeetCodeHot100)141. 环形链表——linked-list-cycledate: 2025-11-12 19:40:00categories:
算法题解tags:
算法
Java
LeetCode
Hash
链表
双指针
快慢指针
160. 相交链表——intersection-of-two-linked-lists给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
图示两个链表在节点 c1 开始相交:
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构 。
自定义评测:
评测系统 的输入如下(你设计的程序 不适用 此输入):
intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0
listA - 第一个链表
listB - 第二个链表
skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数
skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数
评测系统 ...
生活——Life
未读塔斯汀团购券单价分析 & 最优购买方案以下是我买的塔斯汀中国汉堡的团购卷(用作分析)
1234567891018.12元:两个汉堡三个鸡块一个鸡腿 10.32元:一个汉堡三个鸡块一个鸡腿 19.01元:两个汉堡+三拼小食盒(三个鸡块一个鸡腿一份鸡米花) 18.51元:一个汉堡六个鸡腿 16.9元:一个汉堡一个鸡腿一份粗薯一杯可乐 11.9元:一份粗薯+三拼小食盒(三个鸡块一个鸡腿一份鸡米花) 10.6元:一个汉堡+三拼小食盒(三个鸡块一个鸡腿一份鸡米花) 18.9元:一个汉堡一个鸡腿三个鸡块一份粗薯一杯可乐 12.9元:两个汉堡 16.9元:一个汉堡三个鸡块一个鸡腿一杯可乐
一、核心单品单价拆解(基准参考)先通过纯单品 / 极简套餐锁定核心单品 “地板价”,再横向对比所有组合:
汉堡(H):最低单价来自「套餐 9(12.9 元 = 2 汉堡)」→ 6.45 元 / 个(所有套餐中汉堡单价最低,无溢价)
三拼小食盒(S=3 鸡块 + 1 鸡腿 + 1 鸡米花):最低单价来自「套餐 7/6」→ 4.15 元 / 份(无溢价)
鸡腿(L):最低单价来自「套餐 4(18.51 元 ...
141. 环形链表——linked-list-cycle给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。
示例 1:
123输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
123输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:
123输入:head = [1], pos = -1输出:false解释:链表中没有环。
提示:
链表中节点的数目范围是 [0, 104]
-105 <= Node.val <= 105
pos 为 -1 或者链表中的一个 有效索引 。
我的正确答案 ...
136. 只出现一次的数字——single-number给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例 1 :
输入:nums = [2,2,1]
输出:1
示例 2 :
输入:nums = [4,1,2,1,2]
输出:4
示例 3 :
输入:nums = [1]
输出:1
提示:
1 <= nums.length <= 3 * 104
-3 * 104 <= nums[i] <= 3 * 104
除了某个元素只出现一次以外,其余每个元素均出现两次。
我的错误解法12345678910111213141516class Solution { public int singleNumber(int[] nums) { int[] result = new int[100000]; for (int i = 0; i < nums.length ...
121. 买卖股票的最佳时机——best-time-to-buy-and-sell-stock给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
示例 1:
1234输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
示例 2:
123输入:prices = [7,6,4,3,1]输出:0解释:在这种情况下, 没有交易完成, 所以最大利润为 0。
提示:
1 <= prices.length <= 105
0 <= prices[i] <= 104
方法:一次遍历算法
假设给定的数组为:[ ...
一、项目过程概述基于 FastGPT 构建物流数据智能问答系统,核心流程包含两大模块:
知识库搜索(①)
数据来源:本地 CSV 文件手动上传至 FastGPT,作为知识库基础数据。
处理逻辑:通过调用外部索引模型(嵌入模型),将 CSV 中的物流数据转化为向量索引,支持用户查询时的语义相似性检索(RAG 机制)。
预测模型调用(②)
模型基础:基于历史物流数据训练的预测模型(外部语言模型或定制模型)。
响应逻辑:结合知识库搜索结果(①的输出),调用该预测模型生成用户问答的最终响应。
二、当前存在的核心问题
知识库数据更新效率低
新物流数据需手动导入 CSV 文件至 FastGPT,无法实现自动化 / 批量更新,时效性差,且频繁手动操作易出错。
预测模型适应性不足
预测模型基于历史数据训练,当新增物流数据(尤其是分布或特征变化较大的数据)加入时,需重新训练模型才能适配新数据,导致模型维护成本高、迭代周期长,难以快速响应数据动态变化。
三、指导老师提问1.这个查询这个地方,它是直接用RAG来查询的吗?解答:
在 FastGPT 中,我选择了索引模型、语言模型并上传 ...


