- 博客(25)
- 收藏
- 关注
原创 代码训练day27贪心算法p1
然后从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩数量。(2)发现前一段子序列和为负,要更新子序列和起始位置。先将饼干数组和小孩数组排序。(1)遍历记录最大子序列和。
2025-04-14 20:34:02
366
原创 代码训练day25回溯p4
(1)不能排序 (2)回溯搜索不能重复,用hashset去重(3)注意搜索条件,递增,不重复。:通过状态恢复,遍历所有可能的决策分支。
2025-04-14 19:44:53
233
原创 代码训练day22回溯算法p1
重要参数,List<List<Integer>> res ,Deque<Integer> path, int startIndex。回溯算法处理,sum来统计path里元素的总和,(2)优化剪枝,主要是对选过的数字进行剪除。
2025-04-06 18:33:17
263
原创 代码训练day21二叉树p8
然后用 root.left = trimBST(root.left, low, high);相当于把节点root 的右孩子(节点root.right)返回给上一层,需要一个pre指针记录当前遍历节点cur的前一个节点,这样才方便做累加。root.val < low但是root的右孩子在区间内,累加的顺序是右中左,需要反中序遍历这个二叉树,然后顺序累加。108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。669. 修剪二叉搜索树。
2025-04-06 14:10:19
351
原创 代码训练day18二叉树p6
利用好二叉搜索树中序遍历是递增的性质,在中序遍历时比较,cur.val - pre.val 的最小值。(1)求最小公共祖先,需要从底向上遍历,二叉树,后序遍历。有序数组中寻找众数的方法。
2025-04-03 18:35:53
302
原创 代码训练day16二叉树p4
dfs每次递归减去节点值,递归到叶子节点,如果结果为0返回true。(1)bfs层序遍历技巧先右入队再左入队,最后出来的是左下角。(2)dfs实现,先找到最大深度(最后一层),在找左下角。
2025-04-02 21:37:54
440
原创 《人工智能导论》
管理:利用人工智能分析个人的基因、生活习惯和环境因素,为个体提供定制化的健康建议和治疗方案。:开发能够根据学生的学习进度和兴趣定制教学内容和难度的智能教育平台。优化:优化能源分配和消耗,支持可持续能源系统的发展。智能:应用人工智能技术来优化交通流量管理,减少交通拥堵,提升交通安全性,并支持自动驾驶车辆的集成。管理:利用AI进行生态监测和预测,例如通过分析卫星图像和气象数据来预测洪水、火灾等自然灾害的发生,以及对生态系统的健康状况进行长期监控。
2025-03-30 15:07:50
1278
原创 代码训练day15二叉树3
递归 (1)终止条件 (2)单层递归,左右子树都要递归 (3)结果处理逻辑。(2)dfs 递归处理左右,当前为left + right + 1;(1)bfs层序遍历求个数 当que.offer()时计数。处理(1)遇到叶子节点 (2)遇到左子树 (3)右子树。递归逻辑理解,单层递归考虑子树。
2025-03-30 15:00:58
223
原创 代码训练day14二叉树part2,dfs和bfs强化
(1)递归遍历(前序or后序)(2)交换(swap) 左右子节点。(1)dfs,注意某一子树为空的情况。
2025-03-29 20:56:46
372
原创 代码随想录day13二叉树
(1) 确定函数参数和返回值 void (TreeNode root, List<Integer> res)(3)确定遍历顺序。前序根在前,中序根在中。(2) 确定递归终止条件 return;标记法,空指针 null 或者 boolean。
2025-03-29 16:43:12
210
原创 代码训练day11栈与队列2
equals的使用," - " 和 " / " 特殊处理 , String转int是 integer.valueOf();comparator使用原理。构造最小堆,优先级队列。
2025-03-28 18:34:11
227
原创 Day8代码训练 字符串
else if (i + k > n) { // 剩余字符少于k。// 如果是数字字符,替换成 "number"// 使用 StringBuilder 构建结果字符串。if(i + 2*k <= n) {// 普通情况。} else { // 剩余字符大于k 小于 2k。// 如果是字母字符,保持不变。// 遍历输入字符串。// 返回结果字符串。
2025-03-23 15:20:37
907
原创 代码训练day7哈希表2
for (int num3 : nums3) {// 如果 0-(3+4) 在map中出现过的话,就把map中key对应的value也就是出现次数统计出来。i++) {// 第二层for循环。k++) {// 第一层for循环。if (sum == 0){ // 符合条件的情况下的去重逻辑。双指针注意 (1)左右指针初始化位置 (2)停止条件 (3)去重逻辑。三数之和plus 考虑更多的去重和剪枝条件,两层for循环。// 四数相加ii 统计个数。// 要求不重复、需要去重。
2025-03-22 17:03:31
1159
原创 代码训练day5哈希表使用,java
/ 对应的字符出现的次数 s.charAt(i), 次数。// <数字,下标>输出交集,判断set.contains(num),res.add(num)sum += (n % 10) * (n % 10);if (set.contains(num))// hashset 检查交集。// hastset去重。3.快乐数 leetcode202。
2025-03-22 15:03:35
633
原创 代码训练day4 链表 (头节点、双指针
/ 哨兵节点 dummy node0 -> node2 node2 -> node1 node1 -> node3。// 0往后移动2,到node1(1、2互换了),node1后移动2,到node3。// 1.双指针 fast和slow相遇后,fast指向head同时走。// p1 走一步,如果走到 A 链表末尾,转到 B 链表。// p2 走一步,如果走到 B 链表末尾,转到 A 链表。// p1 指向 A 链表头结点,p2 指向 B 链表头结点。
2025-03-18 22:58:36
492
原创 代码训练day3链表
public void addAtIndex(int index, int val) { // 下标有效,插入到index之前,或末尾。// newNode -> head.next (当前头节点)if (index < 0 || index >= size) {// 判断合法性。public int get(int index) {// 获取index值。class Solution {// 未考虑头节点值 == val 引入虚拟头节点。//第0个节点是虚拟头节点,所以查找第 index+1 个节点。
2025-03-15 16:23:35
377
原创 代码训练day2数组
/前缀和sum[i] 为array前i个数的和。while (loop <= n / 2) { //停止时层数恰好是n / 2的整数部分。while (sum >= target) { // 注意if和while的使用。// 最右列 第j列 startX -> n-offset 移动。if (n % 2 == 1) { // n为奇数单独处理中心值。// 最底行 第i行 j -> startY 方向移动。// 最左列 为第 j 列 i -> startX。// 起点 + 前缀和的差 = 区间的和。
2025-03-13 13:13:17
259
原创 代码训练day1
while (left <= right) {// 停止条件。if (nums[i] > 0) {// 没有负数的情况。while(left <= right) {// 注意区间。// 注意指针移动情况。// 注意快慢指针推导过程、元素顺序可能改变。一、 二分查找 (双指针、注意区间、注意目标)// 双指针、两边到中间。
2025-03-12 19:11:26
422
空空如也
请问这有什么问题吗?
2022-09-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅