- 博客(30)
- 收藏
- 关注
原创 Day34 不同路径 不同路径 II 整数拆分 不同的二叉搜索树 动规方程 如何遍历
j-1 为j为头结点左子树节点数量,i-j 为以j为头结点右子树节点数量。dp[i] 值表示结点数为i 的不同二叉搜索树的数量。将障碍物位置的dp[][]置为0。
2024-12-05 21:21:55
350
原创 Day32 动态规划 斐波那契数 爬楼梯 使用最小花费爬楼梯
dp[i - 1] 跳到 dp[i] 需要花费 dp[i - 1] + cost[i - 1]。dp[i - 2] 跳到 dp[i] 需要花费 dp[i - 2] + cost[i - 2]。第三层楼梯的状态可以由第二层楼梯 和 到第一层楼梯状态推导出来。即第三层可以通过 第二层走一步 或者第一层走两步。
2024-12-05 09:40:04
265
原创 Day28 买卖股票的最佳时机 跳跃游戏 跳跃游戏 II K 次取反后最大化的数组和
求最大利润 将每天的正利润加和55. 跳跃游戏 - 力扣(LeetCode)问题就转化为跳跃覆盖范围究竟可不可以覆盖到终点每移动一个单位,就更新最大覆盖范围。贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。45. 跳跃游戏 II - 力扣(LeetCode)1005. K 次取反后最大化的数组和 - 力扣(LeetCode)贪心思想 : 存在负数取反 选择绝对值最大的取反 同理都大于0 选择最小的正数取反 从而局部最优到整体
2024-12-04 19:27:31
421
原创 Day27 贪心算法 分发饼干 摆动序列 最大子数组和
贪心策略 局部最优就是当遇到之和为负数直接舍弃归0 并且从后面的一个数作为起点开始累加。判别摆动两种情况 1.cur>0 pre<=0 2.cur<0 pre>=0。其中 如何删除坡度唯一时的多个结点值 就是。
2024-11-26 20:17:35
330
原创 Day15 平衡二叉树 二叉树的所有路径 左叶子之和 完全二叉树的节点个数
中序遍历来遍历根节点到叶节点的路径 用到回溯将遍历过的左右结点去除。非递归 栈 前中后序 均可以 只要遍历到每一个结点来判断。层次遍历 遍历所有节点数。
2024-11-24 17:38:09
170
原创 Day25 非递减子序列 全排列 全排列 II
但是但是,不能先排序,问题是求原数组中的递增序列 所以要用set集合来去重(4757)后面7要剪枝。记录是否被使用 注意回溯设为false。先搜索所有结果 之后判断结果是否有序。同一树枝上不能出现重复元素 可以通过。解决超时 就要更改去重方式 用。上述比较去重 只能比较。前提是将nums排序。
2024-11-23 20:43:56
265
原创 Day24 复原 IP 地址 子集 子集 II
中 substring的ip字段的规范 时间复杂度 O(3^n) 有3^n-1个结点(结果)// 而不是i>0 会将组合中所有的重复元素去除包括同一树枝下。// i>startIndex 是从第一个元素之后出现重复时。每个结点的度为3 高度为规模n 的递归树。可以通过同一树层不能有重复元素 来去重。注意递归深度控制 和。来去重 但是容易超时。
2024-11-23 20:40:37
249
原创 Day23 组合总和 组合总和 II 分割回文串 注意startIndex与startIndex+1的区别
剪枝 因为数组已经有序 即当sum值大于target时,无需对其后的分支进行递归运算。回溯:1.方程和参数 2.终止条件 3.for 单层循环逻辑。其中字符串的切割位置 靠startIndex的移动。对象,最终所有路径path集合都会变成最后的状态。的引用,在递归过程中会被不断修改。错在递归时要传strartIndex值 =i。对象是按引用传递的。无重复 超时 但是还是无法解决。需要对相邻的结点进行判断剪枝。在递归时index +1 直接。中的所有路径都指向同一个。
2024-11-22 23:01:56
322
原创 Day22 回溯应用 组合 组合总和 III 电话号码的字母组合
对递归树进行 剪枝 将在递归中的for循环的范围 控制在n-(k-path.size())+1 的范围。当path.size() =0 范围至多为3 对子树为4进行剪枝。2.将map转为 String[] 可以优化成0毫秒。回溯就是 递归里面加for循环 暴力搜索全部。
2024-11-22 01:22:55
192
原创 D21 修剪二叉搜索树 将有序数组转换为二叉搜索树 二叉搜索树转换为累加树 + 总结
递归 终止条件 当root的值小于low 将右子树直接返回 同理当大于high108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode)将有序数组从中间分开,二分法的创建 二叉搜索树AI tell me:将有序数组转换为平衡二叉搜索树的功能,但有一些地方可以优化和改进。特别是,你不需要对数组进行反转,也不需要显式地创建左右子节点后再递归构建子树。可以通过递归直接构建整个树。将有序数组从中间分开,降序的创建 二叉搜索树538. 把二叉搜索树转换为累加树 - 力扣(LeetCode)递归
2024-11-19 22:57:29
276
原创 Day18 二叉搜索树的最近公共祖先 二叉搜索树中的插入操作 删除二叉搜索树中的节点
【代码】Day18 二叉搜索树的最近公共祖先 二叉搜索树中的插入操作 删除二叉搜索树中的节点。
2024-11-18 20:14:54
120
原创 Day 14 翻转二叉树 对称二叉树 二/N叉树的最大最小深度
翻转之后 会改变原来的二叉树形状。通过判断 两个二叉树是同一个 ,所以要先拷贝再翻转比较 来判断二叉树是否是对称的。而单独使用前序遍历和后序遍历则无法唯一确定一棵二叉树。递归 **最小深度是从根节点到最近叶子节点的最短路径上的节点数量。非递归 层次遍历 当结点的左右子树均为空时deep++3.非递归 普通队列 用双端队列,相当于两个栈。1.先将二叉树翻转 之后判断二叉树是否相等。非递归1 栈 入栈前交换 是前序遍历。. 递归比较左子树和右子树。非递归3 队列 层次遍历。
2024-11-13 00:01:30
379
原创 Day13 二叉树的前中后层次遍历 递归非递归 BFS的应用
非递归方法1 左子树不为空 value++ 进栈 ,为空 value++ 访问右子树 ,当标记value为3 出栈 ,出栈顺序即后序。非递归方法1 左子树不为空 进栈 ,为空 出栈 访问右子树 入栈时访问为先序 出栈时访问为中序。非递归 左子树不为空 进栈 ,为空 出栈 访问右子树 出栈时访问为中序。非递归方法2 栈非空栈顶出栈 循环将根节点的左右子树入栈 之后反转。非递归方法2 栈非空 栈顶出栈 循环将栈顶的右左子树入栈。
2024-11-12 10:33:14
402
原创 Day7 赎金信 .四数相加II 三数之和 四数之和(hashmap hash数组 双指针)
双指针 + for 同两数之和 之和较大时 right 左移, 较小时 left右移 终止条件 left>=right 注意数组越界。先分成两组 之后hashmap 其中key 为两数之和 value为 之和出现的次数。
2024-11-06 00:44:31
117
原创 Day6 有效的字母异位词 两个数组的交集 快乐数 两数之和 (双指针-首尾,快慢)(hash表 hashset hashmap 字符数组)
时间复杂度:O(mlogm+nlogn),其中 m 和 n 分别是两个数组的长度。对两个数组排序的时间复杂度分别是 O(mlogm) 和 O(nlogn),双指针寻找交集元素的时间复杂度是 O(m+n),因此总时间复杂度是 O(mlogm+nlogn)。在算法的每一步中,慢指针在链表中前进 1 个节点,快指针前进 2 个节点(对 getNext(n) 函数的嵌套调用)。先转为set集合去重 之后再求交集 时间复杂度: O(n + m) m 是最后要把 set转成array。从数组头进行遍历比较。
2024-11-05 00:13:55
143
原创 day1 算法打卡卡 二分查找 移除元素(同一方向双指针)有序数组的平方(两端 双指针)
其中慢指针代表新的的数组,快指针负责依次遍历 寻找不是要删除的元素 并且将值赋给慢指针 最后slow++的数组下标代表新数组的长度。边界条件 奇数重合 偶数slow>fast 时间复杂度为O(n),相对于暴力排序的解法O(n + nlog n)端点双指针,有序的数组最值只可能在两个端 利用两个端点的指针依次比较并且向中间移动 将较大者放到新数组中。
2024-11-03 22:37:20
246
1
原创 ajax实现步骤
属性存留 XMLHttpRequest 的状态。属性定义当 readyState 发生变化时执行的函数。属性存有 XMLHttpRequest 对象的状态。responseText属性 响应过来的数据。想要实现ajax需要四个步骤。
2024-05-08 22:25:31
350
原创 js 数组 对象for 循环
主要用于遍历对象的属性,而不是数组的元素。它也会遍历到数组原型链上的属性,所以使用时需要小心。方法是最常用的,因为它们提供了简洁且易读的代码。选择哪种方法取决于你的具体需求和偏好。在JavaScript中,有多种方法可以遍历数组。**遍历对象常用 for in **但如果你确实想要使用。
2024-05-08 22:22:43
605
1
原创 js中同步异步代码执行顺序
在JavaScript中,同步(Synchronous)和异步(Asynchronous)代码的执行顺序是理解JavaScript事件循环(Event Loop)和回调(Callback)、Promise、async/await等异步机制的关键。使用Promise和async/await可以使异步代码看起来更像同步代码,但它们的执行仍然是异步的。的回调函数之前被调用(因为它的延迟更短),但JavaScript的事件循环会确保它们都在同步代码之后执行,并且按照它们被添加到事件队列中的顺序执行。
2024-05-08 22:21:54
341
1
原创 arguments
所有函数都内置了一个 arguments 对象,arguments 对象中存储了传递的所有实参。arguments展示形式是一个伪数组,因此可以进行遍历。当不确定有多少个参数传递的时候,可以用 arguments 来获取。JavaScript 中,arguments实际上它是当前函数的一个。
2024-05-07 22:23:22
286
1
原创 promise AsyncAwait 的使用
async/await是ES7提出的新语法,用来简化Promise的异步操作.then()链式调用,Promise虽然解决了回调地狱的问题,但是代码冗长,阅读性差,不易理解。如果函数返回一个值,promise会把这个值通过promise.resolve()封装成一个promise对象。是一个返回 Promise 的函数,当这个 Promise 解决(fulfilled)时,1、async修饰过的函数,会变成一个异步函数,函数返回的是一个Promise对象,函数的 Promise 完成,并获取响应。
2024-05-07 22:22:44
473
原创 let var const 的区别
4、var 声明的变量可重复声明重复赋值,let声明变量不可以重复声明,但是可以重复赋值,const声明的常量,既不可重复声明,也不可重复赋值。**- var 是函数作用域或者是全局作用域 let是块级作用域 即变量的作用范围不一样 **在这段代码中,虽然使用了与原始问题相似的结构,但有一个关键的差异:这里使用了。3、var声明的变量受函数作用域的影响,let const受块级作用域的影响。关键字声明的变量具有块级作用域,这意味着它们只在包含它们的代码块(如。的块级作用域,,而不是像。
2024-05-07 22:21:59
324
原创 答案 5/7
Async/Await 是建立在 Promise 之上的,它提供了一种更直观的方式来处理异步操作。总的来说,Async/Await 是对 Promise 的一种改进和扩展,它提供了更直观、更简洁的语法来处理异步操作,并且更易于阅读、理解和调试。然而,Promise 仍然是 JavaScript 中处理异步操作的基础,async/await 只是建立在这个基础上的一个语法糖。ES6模块化是浏览器端与服务器端通用的模块化开发规范,其设计思想是尽量静态化,使得编译时就能确定模块的依赖关系及输入和输出的变量。
2024-05-07 16:34:14
374
原创 面向对象程序设计主要的三个特征
1,封装性将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被分装在其内部2,继承性是指保留基类的部分特性创造新类的过程(派生:在已有的基类中增加自己的特性)3,多态性当多种事物继承同一事物,同一操作在它们之间表现出不同行为(编译时多态是函数模板和函数重载,运行时多态是指虚函数)...
2021-12-20 11:48:22
3856
原创 c语言引用详解
引用就是对某一变量起了一个新别名,对引用的操作就是对其变量的操作;int &a=b;//定义引用a,它是变量b的引用名即既是别名1,引用方法类型标识符(变量的类型)+&+引用名=目标变量名;2,声明引用时必须对其初始化3,声明一个引用并不是新定义一个变量,它只是一个引用名仅仅是变量的一个别名(一个引用名仅仅做为一个变量的引用),它不是一个数据类型,so它本身不占内存,系统也不给他分派内存空间4,对引用求地址就是对变量求地址(&a=&b)5,Beca..
2021-12-20 11:31:16
19093
1
原创 C++函数模板详解
C++中函数模板就是对于多个仅仅函数参数类型不同但内容相同时,定义的泛类函数。通过参数类型做为参数传递给模板,可以使模板生成此类型的函数例如:template<class Type>void swap(Type &a,Type&b){Type temp;temp=a;a=b;b=temp;}调用函数时int a,int b;swap(a,b);//会生成 void swap(int a,int b);double a,double b;.
2021-12-19 21:55:21
3766
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人