- 博客(107)
- 收藏
- 关注
原创 力扣Hot100-200岛屿数量(图论 * DFS遍历)
网格问题是由 m×n 个小方格组成一个网格,每个小方格与其上下左右四个方格认为是相邻的,要在这样的网格上进行某种搜索。岛屿问题是一类典型的网格问题。每个格子中的数字可能是 0 或者 1。我们把数字为 0 的格子看成海洋格子,数字为 1 的格子看成陆地格子,这样相邻的陆地格子就连接成一个岛屿。在这样一个设定下,就出现了各种岛屿问题的变种,包括岛屿的数量、面积、周长等。不过这些问题,基本都可以用 DFS 遍历来解决。
2024-08-10 11:53:52 984
原创 力扣(动态规划)-343整数拆分;96不同的二叉搜索树
所以这里遗漏了一种情况:若是i-j不进行划分时得到dp[i]的最大值,那么dp[i]=j*(i-j)从递推公式dp[i]=j*dp[i-j]可以看出后面的结果是由前面i-j推导出来的,所以i⼀定是从小到大遍历,先有dp[i - j]再有dp[i]此时由于j不会再被划分,所以要使dp[i]最大,则 就要对(i-j)进行拆分使得拆分后的几个整数的乘积最大,即dp[i-j]。综上所诉,我们的递推公式应该是dp[i]=max( j * dp[i-j], j*(i-j) )返回你可以获得的最⼤乘积。
2024-08-24 21:20:38 228
原创 力扣Hot100-208实现Trie(前缀树)-华为/腾讯面试题(重难点)
是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。// 返回 False。// 返回 True。// 返回 True。// 返回 True。1.不理解创建的对象,函数之间的调用关系。(发音类似 "try")或者说。
2024-08-19 15:25:52 264
原创 力扣Hot100-final关键字,常量,抽象类(模板方法设计模式),接口
使用关键字abstract修饰的类,方法叫抽象类,抽象方法注意:抽象方法必须在抽象类中实现//抽象方法:必须abstract 修饰,只有方法签名,不能有方法体//这里不能加{。。。}等方法体(四)抽象类的常见应用场景:模板方法设计模式 (面试,笔试,源码中会出现)(1)场景:学生,老师都要写一篇作文:神经网络 第一段,最后一段相同 正文不同未使用abstract时的学生类和老师类:System.out.println("\t\t《神经网络》");
2024-08-16 15:42:59 482
原创 Java基础入门-多态
/2. 运行时,如果发现对象的真实类型和 强制转换后的类型不同,就会报类型转换异常 的错误 eg:将s1强制转换为Teacher类型时编译不会报错,但是运行时发现不是一个类型就会报错。//因此java建议:使用 instanceof 关键字判断当前对象的真实类型,再进行强转。//多态存在问题:不能直接调用子类独有方法,可以使用多态下的类型转换实现。//1.存在 继承/实现关系 就可以在编译阶段强制类型转换,编译不会报错。//强制类型转换:子类 变量名 =(子类) 父类变量。
2024-08-14 16:14:35 442
原创 力扣Hot100-207课程表(vector初始化问题,拓扑排序)
你这个学期必须选修numCourses门课程,记为0到。在选修某些课程之前需要一些先修课程。先修课程按数组给出,其中,表示如果要学习课程ai则先学习课程bi。[0, 1]01请你判断是否可能完成所有课程的学习?如果可以,返回true;否则,返回false。true总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。这是可能的。false总共有 2 门课程。学习课程 1 之前,你需要先完成课程 0;并且学习课程 0 之前,你还应先完成课程 1。这是不可能的。
2024-08-11 15:20:23 215
原创 力扣Hot100-994腐烂的橘子
由于在找到腐烂水果后直接将它周围的水果置为腐烂水果,但是可能当前轮次腐烂的水果,又在当前轮次中影响周围水果,导致错误,所以可以标记:在不同轮次中被传染腐烂的水果标记为不同的数字,由于一开始time=0时,腐烂水果标记为2,所以在time=0到1这段时间被传染的水果标记为2+time+1,这样就可以使得本轮time=0时不会让标记为3的水果传染它周围的水果。左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个方向上。因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0。
2024-08-10 22:52:22 401
原创 力扣Hot-124二叉树中的最大路径和(p523二叉树直径的变形)
/2该路径不一定是从一个叶节点到另一个叶节点,所以,当左子树/右子树均为负数时,返回的最大值为当前节点值node(不需要再判断node的正负,当它作为子节点扔为负数时,会被舍弃)被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。//易错:1,可能出现左右子树为负数,此时以node为根的最大值应该为node自己。最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42。最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6。节点,且不一定经过根节点。
2024-08-10 11:00:14 315
原创 力扣Hot100-236二叉树的最近公共祖先
中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(两个节点中最高的那个节点p,因此将高度较矮的节点q沿着他的父节点向上爬,直到与另一个节点p在同一高度,否则,p,q两个节点都沿着父节点向上走,直到p,q指向同一个节点。再判断当前p,q是否为同一个节点,是则说明找到公共祖先。因为根据定义最近公共祖先节点可以为节点本身。两个节点的最近公共祖先所在的。的最近公共祖先是节点。的最近公共祖先是节点。
2024-08-09 11:49:50 320 2
原创 力扣Hot100-路径总和iii
例如:在下面图中,遍历左子树:10->5->3(1)->3(2)之后开始从3(2)回溯到节点3(1),此时需要减掉3(2),再开始遍历右子树,将3(1)的右孩子-2的值加入求和。将树中的节点分别视为根节点,从根节点开始使用前序遍历求和,当左子树节点遍历完后开始回溯,回溯时将加入计算的左子树值剪掉,继续计算右子树值。不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。//2:路径往下值得是各个节点不在同一层,但可以是根,左,右,不一定全是在左边。
2024-08-09 10:36:27 295
原创 力扣Hot100-114二叉树展开为链表
思路:我们知道前序遍历的访问顺序为根->左->右,可以观察到在遍历时二叉树最左边的顺序就是访问顺序,只有当前访问的节点没有左节点时,才会开始访问右节点,所以,我们可以用pre记录前一个访问的节点, 站在pre节点的角度来看,若是pre没有左孩子,则下一个访问pre右分支上的节点Node,且可以将pre的左分支指向下一个访问的节点Node,实现将访问顺序记录到二叉树的左分支上,从根节点开始访问其左孩子,可以得到先序遍历的顺序。若pre节点有左孩子,下一个访问的即是pre的左孩子。额外空间)展开这棵树吗?
2024-08-08 10:38:57 1017
原创 力扣Hot100-199二叉树的右视图
想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。从右侧看,所以优先存在右孩子,因此遍历顺序为 根节点->右孩子->左孩子。思路:由于要从上到下的循序,所以应该先访问根节点;的节点 的高度,则当前节点也要放入访问队列中。若当前节点高度大于等于。
2024-08-07 11:03:11 368
原创 力扣Hot100-230二叉搜索树中第K小的元素
二叉树的中序遍历即按照访问左子树——根结点——右子树的方式遍历二叉树;在访问其左子树和右子树时,我们也按照同样的方式遍历;因此本题转化为对二叉树进行中序遍历,常见的遍历方式有:递归和迭代(使用栈)所有左子树和右子树自身必须也是二叉搜索树。结点的左子树只包含小于当前结点的数。结点的右子树只包含大于当前结点的数。二叉搜索树的中序遍历为一个递增序列。,请你设计一个算法查找其中第。小的元素(从 1 开始计数)。给定一个二叉搜索树的根节点。或左节点已经被访问过。
2024-08-07 10:37:28 492
原创 力扣Hot100-98验证二叉搜索树(递归,深度优先搜索,c++)
根节点的值是 5 ,但是右子节点的值是 4。,判断其是否是一个有效的二叉搜索树。//易错:左子树值等于根值也不是。给你一个二叉树的根节点。
2024-08-06 15:52:22 819
原创 力扣Hot100-108将有序数组转为二叉搜索树(BST的特点)
给你一个整数数组nums,其中元素已经按排列,请你将其转换为一棵平衡二叉搜索树。[0,-10,5,null,-3,null,9] 也将被视为正确答案:[3,1][1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。
2024-08-06 14:46:01 198
原创 Java入门-Static修饰成员变量的用法和特点
(1)有static修饰的成员变量为:类变量(类的变量):无论创建多少个变量,都只共享一个name变量(2)无static修饰的成员变量为:实例变量(对象的变量):每个创建的对象都有自己独立的ageStudent类中://类变量(类的变量):无论创建多少个变量,都只共享一个name变量//加上//实例变量(对象的变量):每个创建的对象都有自己独立的ageint age;创建Test类进行特点查看://掌握有无static修饰成员变量的用法和特点//1.类变量的用法。
2024-08-05 21:34:04 529
原创 java入门-API学习
/1创建ArrayList的集合对象//(1)add()将指定元素添加到集合末尾//可以有重复//ArrayList和String一样会根据地址找到其中的内容,所以打印出来的是list中的内容//约束集合类型://2:add(index,element)在此集合的指定位置中插入指定元素System.out.println("------删除之前---------");//3:remove(),删除指定索引处的元素,返回被删除的元素//“888.8”被删除并返回。
2024-07-30 17:23:32 1032
原创 力扣Hot100-543二叉树的直径
二叉树上的任一“路径”上一定有一个结点是所有其他结点的祖先结点(因为“路径”是由一个个父子关系连接而成的),那么换个表述方法,对于任一结点,以此结点为根的diameter就可以表示为左子树高度 + 右子树高度,而二叉树的diameter(直径)就是所有结点为根的diameter中最大的那个。在下图中,判断完节点2后要回溯到节点1继续判断,此时节点1的左子树高度为节点2的左子树高度和右子树高度中的最大值,再加1,即l(1)=max[ l(2) ,r(2)]+1,其中l(2)表示节点2的左子树高度。
2024-07-25 16:48:22 426
原创 java入门-Day11(面对对象基础综合案例)
System.out.println("----------系统全部电影信息如下--------");System.out.println("电影名称"+m.getName());System.out.println("编号:"+m.getId());System.out.println("电影名称"+m.getName());System.out.println("编号:"+m.getId());//---------2根据电影编号查询出电影详细信息。//定义一个电影数组记录要处理的多部电影。
2024-07-25 10:51:16 339
原创 java入门-面对对象基础(封装、实体Javabean)
(一)封装的概念用类设计对象处理某一个事物的数据,应该把要处理的数据,以及处理这些数据的方法涉及到一个对象中去面对对象的三大特征:封装、继承、多态(二)封装的计划规范合理隐藏、合理暴露(三)代码层面如何控制对象的成员公开或者隐藏在下面的案例中隐藏参数score,并通过getScore和setScore方法对score进行进行访问student:中//若是private double score;则外界无法看到scoreelse{
2024-07-23 11:27:16 882
原创 力扣Hot100-94二叉树的中序遍历
注意:在压入左孩子时要判断这个左孩子是否被访问过,eg:在[1,null,2,3]中3被访问后,节点2在栈最上面,进入循环后断2是否有左孩子,2有左孩子节点(3),但是已经被访问,若是再次入栈会陷入死循环。使用栈:当栈不为空时,对当前栈中最上面的节点进行判断,如果节点存在左孩子,且左孩子没有被访问,则将左孩子压入栈,不存在左孩子则将当前最上面节点弹出栈,并判断其是否有右孩子,有则压入栈。递归算法很简单,你可以通过迭代算法完成吗?给定一个二叉树的根节点。
2024-07-21 14:45:03 328
原创 力扣Hot100-148排序链表(插入排序/归并排序)
给你链表的头结点head,请将其按排列并返回。[1,2,3,4]head = [][]方法一:插入排序,但是由于链表是无序的,插入排序在最坏情况下的时间复杂度是 O(n^2),这对于较大的输入会导致超时插入排序思想,依次对未排序的节点插入到已经有序的链表中你可以在O(nlogn)时间复杂度和常数级空间复杂度下,对链表进行排序吗方法二:归并排序归并排序在链表排序中表现良好,归并排序(Merge Sort)是一种基于分治法的排序算法,具有稳定的排序表现,时间复杂度为 O(nlogn)。
2024-07-16 15:29:51 1041
原创 SQL练习
count()、max()、min()、sum()、avg()这些是聚合函数,不能出现在where子句中,可以出现在group子句中,所以A、B选项是错误的。(1).FROM 子句, 组装来自不同数据源的数据 (2).WHERE 子句, 基于指定的条件对记录进行筛选 (3).GROUP BY 子句, 将数据划分为多个分组 (4).使用聚合函数进行计算 (5).使用 HAVING 子句筛选分组 (6).计算Select所有的表达式 (7).使用 ORDER BY 对结果集进行排序。
2024-07-16 11:54:47 646
原创 数据结构专项-字符串
面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。深拷贝和浅拷贝:浅拷贝实际上是复制了被拷贝对象的引用,也就是说浅拷贝的和被拷贝对象指向的是同一块内存空间,而深拷贝则是连同引用的对象也被拷贝,两者指向的是不同的内存空间。然后计算乘法,故之后是*,再计算加法,因此+要在6的前面,不然就是计算4*(x+3)+6了,故选D。中缀表达式中应该先计算x+3,因此后缀表达式中+应该出现在x和3的后面,排除BC。
2024-07-16 11:54:25 427
原创 Java入门-Day7-面对对象基础-构造器
/现在创建对象时就根据输入的参数判断触发哪一个构造器。public Student(String name,double score){//有参数构造器。//构造器:对象名称和方法名称一样,只要参数列表不一样就可以创造很多构造器。①类在设计时,如果不写构造器,Java会为类自动生成一个无参构造器。②:一旦定义了有参数构造器,java就不会帮我们自动生成无参数构造器。public Student(){//无参数构造器。//特点1:创建对象时,对象会去调用构造器。/*触发无参数构造器*/
2024-07-09 17:18:53 185
原创 java入门-面向对象基础(this关键字)
if(this.score>score){//注意score指的是从方法中的形参获得到的,而this.score指的是上面的成员变量score。this 关键字是一个变量,可以在方法中使用,用来拿到当前对象,那个对象调用方法,this就指向哪个对象,也就是拿到哪个对象。//调用方法时,先将自己在堆内存中创建的keythis对象地址传给方法中的this。public void PintThis() { //thiskey类中的方法 //注意不能是static。//成员变量score。
2024-07-09 11:22:47 436
原创 java入门-java方法实现+案例
public static int sum(int a,int b){//int 是返回类型,sum是方法名称。System.out.println(“无参数无返回值”);//素数是除了1和它本身以外,不能被其他正整数整除的数。判断101-200之间有多少个素数,并输出所有素数。eg:3,7是素数,而9,21不是素数。(一)使用方法实现求和。(二)随机生成验证码。
2024-07-09 10:54:12 330
原创 java入门-3案例知识(在程序中接收用户通过键盘输入的数据)
使用API文档:搜索Oracle官网->Product中找到java->java download->document download。在程序中,提示用户通过键盘输入自己的姓名,年龄,并能够在程序中收到这些数据,如何解决?//调用java写好的程序,通过API(应用程序编程接口)调用。
2024-07-05 15:30:30 128
原创 力扣Hot100-24两两交换链表中的节点(三指针)
思路:要实现两个节点node1,node2的交换必然需要三个指针实现,其中两个指针分别指向两个节点,另一个指针指向node1的前一个节点。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。为使后续节点也能循环使用该代码,需要将p,q,w分别按照相对位置指向下一对要交换的结点。
2024-07-03 23:47:21 286
原创 力扣Hot100-19删除链表的倒数第n个节点(双指针)
要删除的节点Node为倒数第n个,当n已知后,要删除的节点与最后一个节点之间的距离是已知的,设为s。可以使用双指针p,q,将两个指针的距离调整为s+1,此时保持两个指针距离不变,对两个指针下移,直到指针q指向链表的最后一个节点时,指针p指向 要删除节点 的 前一个节点 。修改p->next=p->next->next便可实现删除倒数第n个节点。
2024-07-03 23:38:49 416
原创 java入门-基础语法(运算符)
/13abc ,由于计算是从前往后,在a,b出现时还没有出现字符串,能够计算,所以先计算a+b再拼接“abc”System.out.println("abc"+a+'a');//abc11a ,因为a是变量存储的值为11,使用单引号'a'后a变成了一个字符.a+=b即为a=(a的类型)a+b,为保证能够正确赋值,相加后的类型强制转换为a的类型。System.out.println("进行a++操作之后a的值"+a);System.out.println("进行a++操作之后a的值"+a);
2024-07-03 11:29:51 273
原创 力扣Hot100-2两数相加(反转链表)
根据加法的计算公式,我们应该知道要先将两个多位数(整数:a3a2a1和整数:b2b1)[a1代表一个阿拉伯数字]的地位对齐,从最低位开始相加,产生的进位传递给更高位,参与更高位的加法计算。为了将尾数对齐,可以采用反转链表的方式,此时得到a1a2a3和b1b2,按照顺序对两个链表的数进行相加,保存进位,两个链表中的指针下移继续相加,知道两个链表都结束(其中一个链表结束视为与零做运算)。的链表,表示两个非负的整数。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。
2024-07-02 23:36:09 478
原创 java入门3-java语法基础学习(类型转换)
byte(1个字节)->short(2个字节)->int(4个字节)->long(8个字节)->float(4个字节)->double(8个字节)// byte b=a;//报错,说明大范围类型变量不能直接赋值给小范围类型变量,只能使用强制类型转换。char(2个字节)->int->long->float->double。System.out.println("int转换成byte后的值:");//强制转换公式:数据类型 变量1=(数据类型)变量2、数据。表达式的最终结果类型由表达式中的最高类型决定。
2024-07-01 21:54:33 305
原创 力扣Hot100-141环形链表(「Floyd 判圈算法」(又称龟兔赛跑算法)/哈希表)
方法二:使用快慢指针,慢指针一次走一步,快指针一次走两步,当快慢指针相遇时则说明存在环:(用时较短,但两者时间复杂度都是O(n))方法一:使用哈希表记录已经访问过的节点地址,遍历链表判断当前节点是否已经出现过,出现过则出来环,未出现则不存在环。
2024-06-24 16:20:22 326
原创 指针*使用情况总结
在C++中,*用于指针,指针是的数据类型。(1)声明当前变量为指针变量(2)作为间接访问符,用于访问指针变量指向的值1.动态内存分配在运行时动态分配内存时,2链表节点引用3.传递大型结构体4.标识空指针
2024-06-18 16:52:12 416
原创 力扣Hot100-有效的括号(栈stack)
思路:由于括号都配对的,且从头开始扫描可以发现,最后出现的左括号,他对应的右括号往往最先出现(eg:"{ ( { [,判断字符串是否有效。
2024-05-30 17:03:18 461
原创 力扣Hot100-搜索二维矩阵II
因此,通过从 “根节点” 开始搜索,遇到比 target 大的元素就向左,反之向右,即可找到目标值 target。链接:https://leetcode.cn/problems/search-a-2d-matrix-ii/solutions/2361487/240-sou-suo-er-wei-ju-zhen-iitan-xin-qin-7mtf/每轮 i 或 j 移动后,相当于生成了“消去一行(列)的新矩阵”, 索引(i,j) 指向新矩阵的左下角元素(标志数),因此可重复使用以上性质消去行(列)。
2024-05-29 11:36:57 467
原创 力扣Hot100_54螺旋矩阵(注意思想:重新定义边界)
这里的方法不需要记录已经走过的路径,所以执行用时和内存消耗都相对较小首先设定上下左右边界其次向右移动到最右,此时第一行因为已经使用过了,可以将其从图中删去,体现在代码中就是重新定义上边界判断若重新定义后,上下边界交错,表明螺旋矩阵遍历结束,跳出循环,返回答案若上下边界不交错,则遍历还未结束,接着向下向左向上移动,操作过程与第一,二步同理不断循环以上步骤,直到某两条边界交错,跳出循环,返回答案
2024-05-28 11:11:10 192
四川大学计算机考研经验总结
2024-08-09
四川大学C语言2001-2007
2024-08-09
四川大学软件工程考研复试资料
2024-08-09
计算机考研/工作必会100题
2024-08-09
帆软FR技术支持考核练习题
2024-05-08
(1)学习 Linux 内核的系统调用方法 理解并掌握 Limux 系统调用的实现框架、用户界面、参数传递、进入返回过程
2024-01-11
专家系统原理及实现,利用人工智能的产生式系统、图搜索算法以及专家系统的框架,建造一个小型医疗诊断或水果识别专家系统,具有知识库、
2024-01-11
深度学习设计(VGG19)智能计算系统
2024-01-11
基于XML/注解的AOP模拟银行账户
2024-01-11
java,航空订票系统,Java Swing、MySQL、Dijkstra算法
2024-01-11
一款航空订票系统,采用Java Swing框架进行界面开发,并通过JDBC连接MySQL数据库实现数据的存储和检索
2024-01-11
八数码问题求解,要求:设计估价函数,给出算法伪代码,并采用c或python编程实现,演示A算法的搜索过程,代码要适当加注释,实验
2024-01-11
八数码问题求解:设计估价函数,给出算法伪代码,并采用c或python编程实现
2024-01-11
成电(电子科技大学)820操作系统填空题汇总
2023-11-28
多媒体技术+pr,Dw,flash,ps
2023-07-07
SQL+邮局订报子系统+Qt
2023-07-07
基于卷积神经网络(CNN)的超分辨率图像
2023-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人