自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

it爱好者的学习之路

it爱好者的学习之路

  • 博客(31)
  • 收藏
  • 关注

原创 39. 组合总和 - 力扣(LeetCode)

这个问题是一个典型的回溯算法问题,可以使用深度优先搜索(DFS)来解决。在DFS的过程中,我们需要维护一个当前路径(即当前组合)以及当前的和。位置开始(允许重复选择),对于每个元素,如果加上当前元素的值不超过目标和,则将该元素加入当前组合,并递归调用。在递归调用返回后,需要将当前元素从组合中移除(回溯),以便尝试其他可能的组合。函数中,首先检查当前和是否等于目标和,如果等于,则将当前组合加入结果列表中。如果至少一个数字的被选数量不同,则两种组合是不同的。函数,传入下一个位置作为新的起始位置。

2024-05-21 17:04:11 392

原创 38. 外观数列 - 力扣(LeetCode)

(RLE)是一种字符串压缩方法,其工作原理是通过将连续相同字符(重复两次或更多次)替换为字符重复次数(运行长度)和字符的串联。countAndSay(4) = "21" 的行程长度编码 = "1211"countAndSay(3) = "11" 的行程长度编码 = "21"countAndSay(2) = "1" 的行程长度编码 = "11"Python: 方法、for循环、if else语句、字符串拼接。这样,我们就可以通过迭代的方式构建出外观数列,并返回第。因此压缩后字符串变为。

2024-05-21 16:53:01 829

原创 37. 解数独 - 力扣(LeetCode)

这个解题思路是一个典型的回溯算法在数独求解问题上的应用,它非常直观且易于理解。Python: 方法、for循环、if else语句、列表。Java: 方法、for循环、if else语句、数组。编写一个程序,通过填充空格来解决数独问题。数独部分空格内已填入了数字,空白格用。

2024-05-20 17:05:03 824

原创 36. 有效的数独 - 力扣(LeetCode)

这个思路的关键在于通过三个检查器(行、列、宫)来跟踪每个数字是否已经出现过,并在遍历过程中不断更新这些检查器。如果在任何时刻发现重复的数字,就立即返回。以外,空格内其他数字均与 示例1 相同。但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。Python: 方法、for循环、if判断、列表、集合。Java:方法、for循环、if判断、数组。,验证已经填入的数字是否有效即可。除了第一行的第一个数字从。,否则在遍历结束后返回。

2024-05-14 16:31:50 1169

原创 35. 搜索插入位置 - 力扣(LeetCode)

这个问题是一个典型的二分查找问题,但有一个额外的要求:如果目标值不存在于数组中,需要返回它应该被插入的位置。这意味着我们不仅要找到目标值是否存在于数组中,还要找到它应该被插入的位置,即使它不存在。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。作为结果,它要么是目标值的索引,要么是目标值应该被插入的位置。,以及在何时知道目标值不存在于数组中,并确定其应该被插入的位置。设置为数组的起始位置(索引0),将右边界。请必须使用时间复杂度为。

2024-05-14 16:11:22 303

原创 27. 移除元素 - 力扣(LeetCode)

你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。你不需要考虑数组中超出新长度后面的元素。你不需要考虑数组中超出新长度后面的元素。方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。的元素并返回新数组的长度,我们可以使用双指针的方法。// 根据你的函数返回的长度, 它会打印出数组中。的元素,并返回移除后数组的新长度。

2024-05-14 07:39:37 857

原创 23. 合并 K 个升序链表 - 力扣(LeetCode)

对于合并多个已排序的列表或链表,一种常见的算法是使用最小堆(Min Heap)。在这个问题中,我们可以利用Python的。Java:方法、while循环、for循环、PriorityQueue类、if判断。Python: 方法、while循环、for循环、heapq 模块、if判断。请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。模块不了解的,可以看一下我的这篇文章。将它们合并到一个有序链表中得到。

2024-05-14 00:00:06 639 1

原创 Python 中的 heapq 模块简介

heapq模块提供了实现堆队列算法的函数。堆是一种特殊的树形数据结构,每个父节点都小于或等于(最小堆)或大于或等于(最大堆)其孩子节点。heapq实现了最小堆,这意味着堆顶元素总是最小的。

2024-05-13 23:37:30 300

原创 25. K 个一组翻转链表 - 力扣(LeetCode)

是一个正整数,它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。的整数倍,那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转,请你返回修改后的链表。

2024-05-13 11:21:49 414

原创 19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)

Python: 方法、while循环、for循环。Java:方法、while循环、for循环。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。

2024-05-13 10:50:03 432

原创 双指针(快慢指针)

双指针方法通过控制两个指针的移动速度,可以方便地定位到链表中的特定位置,从而实现对链表的快速操作。在删除链表的倒数第n个节点这个问题中,双指针方法提供了一种简洁、高效的解决方案。

2024-05-13 10:43:25 200

原创 分布式队列 - 蓝桥杯2024年第十五届省赛真题

简单来说,分布式队列包含 N 个节点(编号为 0 至 N − 1,其中 0 号为主节点),其中只有一个主节点,其余为副节点。可以认为主/副节点中的队列是一个长度无限的一维数组,下标为 0, 1, 2, 3 . . . ,同时副节点中的元素的同步顺序和主节点中的元素添加顺序保持一致。执行到第四个 query 时,队列内容如下:0:[1,2,1]1:[1,2,1]2:[1,2,1]由于副本的同步速度各异,因此为了保障数据的一致性,元素添加到主节点后,需要同步到所有的副节点后,才具有可见性。

2024-05-07 16:47:26 759

原创 连连看 - 蓝桥杯2024年第十五届省赛真题

玩家需要在这个网格中寻找一对格子 (a, b) − (c, d) 使得这两个格子中的整数 Aa,b 和 Ac,d 相等,且它们的位置满足 |a − c| = |b − d| > 0。一共有以下 6 对格子:(1, 2) − (2, 1) ,(2, 2) − (3, 1) ,(2, 1) − (3, 2) ,(2, 1) −(1, 2) ,(3, 1) − (2, 2) ,(3, 2) − (2, 1)。对于所有评测用例,1 ≤ n, m ≤ 1000 ,1 ≤ Ai, j ≤ 1000。

2024-05-06 10:44:30 709 1

原创 30. 串联所有单词的子串 - 力扣(LeetCode)

它是 words 中以 ["the","foo","bar"] 顺序排列的连接。它是 words 中以 ["foo","bar","the"] 顺序排列的连接。它是 words 中以 ["bar","the","foo"] 顺序排列的连接。它是 words 中以 ["bar","foo"] 顺序排列的连接。子串 "foobar" 开始位置是 9。它是 words 中以 ["foo","bar"] 顺序排列的连接。Java:方法、集合、泛型、逻辑运算符、if else判断、for循环、while循环。

2024-05-04 11:04:23 944

原创 21. 合并两个有序链表 - 力扣(LeetCode)

这个思路的关键在于利用两个指针来同时遍历两个链表,通过比较节点值来决定哪个节点应该被添加到新链表中。同时,通过哑节点来简化链表的头节点操作。来遍历两个链表,并通过比较它们的值来决定哪个节点应该被添加到新链表中。最后,如果其中一个链表还有剩余节点,我们直接将它们连接到新链表的末尾。最后,我们返回哑节点的下一个节点,它实际上是新链表的头节点。新链表是通过拼接给定的两个链表的所有节点组成的。,并将它们合并为一个新的链表,然后打印出合并后的链表的值。在示例代码中,我们创建了两个示例链表。类来表示链表节点,并在。

2024-05-04 09:47:06 884

原创 18. 四数之和 - 力扣(LeetCode)

Java:方法、集合、泛型、if else语句、while循环、for循环、逻辑运算符、自增自减运算符、数组、Arrays.sort()、Arrays.asList():在遍历过程中,我们需要跳过重复的数字以避免产生重复的组合。的下一个位置开始遍历。由于数组已经排序,我们可以通过比较当前的和与目标值来跳过一些不必要的搜索。与固定前两个数类似,我们需要跳过重复的数字以避免重复的组合。排序有助于我们跳过重复的数字,并优化搜索过程。:最后,我们返回所有满足条件的四元组列表。:在固定前两个数之后,我们使用指针。

2024-05-03 23:13:32 331 2

原创 14. 最长公共前缀 - 力扣(LeetCode)

为数组中的第一个字符串,并从第二个字符串开始遍历数组。对于每个字符串,我们都将其与当前的。Python: 方法、列表、逻辑运算符、for else语句、if判断、字符串。在上面的代码中,我们首先处理了边界情况,包括空数组和空字符串。在遍历过程中变为空字符串,则说明不存在公共前缀,直接返回空字符串。Java:方法、数组、逻辑运算符、for循环、if判断、字符串。编写一个函数来查找字符串数组中的最长公共前缀。进行比较,并在遇到不匹配的字符时截断。如果不存在公共前缀,返回空字符串。输入不存在公共前缀。

2024-05-03 11:43:22 351 1

原创 11. 盛最多水的容器 - 力扣(LeetCode)

图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。最后,它返回计算得到的最大容器水量。Java: 方法、Math.max()、while循环、数组、if else语句、算术运算符、自增自减运算符。为了找到能够容纳最多水的两条线,我们可以使用双指针的方法。双指针分别从数组的两端开始,向中间移动。在每次迭代中,它都计算当前指针所指向的两条线形成的容器的面积,并更新。轴共同构成的容器可以容纳最多的水。指针从数组的开始处开始,

2024-05-03 11:25:27 395 2

原创 2. 两数相加 - 力扣(LeetCode)

在上面的代码中,我们使用了一个哑节点(dummy)来简化链表的创建过程,因为我们不需要在循环开始前就知道链表的长度。哑节点是一个特殊的节点,它不包含任何数据(或包含默认值,如0),但它的下一个节点是结果链表的第一个实际节点。在循环结束后,我们返回哑节点的下一个节点作为结果链表的头节点。想象一下,你有两个逆序的纸条,每个纸条上都写着一串数字,这些数字代表一个非负的整数,但是是从低位到高位排列的(也就是个位数在最前面,十位数在后面,依此类推)。方法来得到相加后的结果链表,最后打印了结果链表的内容。

2024-05-02 11:37:52 712 2

原创 1. 两数之和 - 力扣(LeetCode)

Java:方法、map集合、泛型、for循环、if语句、数组、Arrays.toString()工具类方法、算术计数符。Python: 方法、for循环(enumerate()方法)、字典、if in语句、for循环、列表、你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以想出一个时间复杂度小于。你可以按任意顺序返回答案。,请你在该数组中找出。

2024-05-02 10:15:28 229 3

原创 15. 三数之和 - 力扣(LeetCode)

Java:方法、数组、集合、泛型、if else语句、while循环、Arrays.sort()、Arrays.asList()、逻辑运算符、自增自减运算符。找到后,它使用两个内部循环来跳过所有重复的元素,以避免在结果中包含重复的三元组。最后,它返回找到的所有三元组的列表。为了找到所有和为0且不重复的三元组,我们可以首先对数组进行排序,然后使用三个指针(i, j, k)在排序后的数组上进行遍历。作为输入,并返回所有和为0的不重复三元组的列表。注意,输出的顺序和三元组的顺序并不重要。,判断是否存在三元组。

2024-04-30 17:23:19 227

原创 7. 整数反转 - 力扣(LeetCode)

在这个解决方案中,我们首先确定整数的符号(正或负),然后将其绝对值用于反转操作。我们逐个处理整数的每一位数字,从最低位开始,并将其添加到。是一个负数的最小值(即-2^31),我们不能直接将其乘以10并加上一个数字来检查溢出,因为这会直接导致溢出。最后,我们将反转后的数字乘以原始符号,并返回结果。由于整数反转后符号不变,因此在处理负数时,我们还需要检查反转后的数字是否会小于。)进行比较,因为我们是在处理 32 位有符号整数,其中最高位是符号位。如果反转后整数超过 32 位的有符号整数的范围。

2024-04-30 16:29:44 390

原创 5. 最长回文子串 - 动态规划(dp)- 力扣(LeetCode)

对于每个子字符串,它检查首尾字符是否相等,并且去掉首尾字符的子字符串(如果存在)是否也是回文的。如果是,那么当前子字符串就是回文的,并且更新。值得注意的是,上述代码返回的是最长回文子串的其中一个解,因为可能存在多个最长回文子串。来存储回文子串的信息,然后通过两层循环遍历所有可能的子串,判断它们是否是回文的,并更新最长回文子串的起始和结束索引。同时,它还检查当前回文子串的长度是否大于之前找到的最长回文子串的长度,并更新最长回文子串的起始和结束索引。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

2024-04-29 11:32:18 225 1

原创 Java-Shape类-2

定义一个子类长方形类Rectangle继承自Square类,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()在main函数中,分别构造三个Shape类的变量,分别指向一个Square、Rectangle、Circle对象,并输出他们的周长、面积.请注意,在实际编程中,通常会使用更精确的π值,这里为了简单起见,我们使用了π的近似值。然后,我们为Square、Rectangle和Circle分别创建了子类,并在每个子类中实现了这两个方法。然后,我们调用每个对象的。

2024-04-29 10:23:23 430

原创 3. 无重复字符的最长子串-力扣(LeetCode)

这段Python代码实现了寻找给定字符串中最长无重复字符子串的长度。它使用滑动窗口的方法,通过左右两个指针来定义窗口范围,并利用集合快速判断字符是否重复。当遇到重复字符时,移动左指针收缩窗口,直到重复字符不再出现。最终,返回遍历过程中记录的最长无重复字符子串的长度。方法中,使用了双指针技巧来维护一个滑动窗口,窗口内的字符都是不重复的。通过不断移动右指针来扩展窗口,当遇到重复字符时,就移动左指针来缩小窗口,直到重复字符不再出现。,用于计算一个字符串中不含重复字符的最长子串的长度。因为无重复字符的最长子串是。

2024-04-22 11:27:06 309 1

原创 面向对象标准javaBean图书管理系统

是一个借阅人类,包含私有的name,gender,age,借阅的book,4个借阅人属性,并生成空参构造器、全参构造器,和Getter、Setter,重写toString()方法,方便输出。是一个图书类,包含私有的name,id,author三个图书属性,并生成空参构造器、全参构造器,和Getter、Setter,重写toString()方法,方便输出。用于对图书、借阅人、借阅记录的增删改查,这里我们使用的是ArrayList进行自动扩容。

2024-04-17 22:46:37 349

原创 java-定义完数方法

一个数如果恰好等于它的因子(除自身外)之和,这个数就称为"完数"。比如6=1+2+3,因此6是完数。

2024-04-17 16:27:41 143

原创 java-计算长方体和四棱锥的表面积和体积(类的继承)

计算如下立体图形的表面积和体积。计算如下立体图形的表面积和体积。从图中观察,可抽取长方体和四棱锥两种立体图形的共同属性到父类Rect中:长度:l 宽度:h 高度:z。编程要求:(1)在父类Rect中,定义求底面周长的方法length( )和底面积的方法area( )。(2)定义父类Rect的子类立方体类Cubic,计算立方体的表面积和体积。其中表面积area( )重写父类的方法。(3)定义父类Rect的子类四棱锥类Pyramid,计算四棱锥的表面积和体积。

2024-04-16 17:13:26 440

原创 java-正方形类

定义类Main,并在main方法中, 1.首先创建正方形对象s1,然后通过getEdge()方法输出edge的值,然后调用getArea方法求出s1的面积并输出2.创建正方形对象s2,并通过键盘输入s2对象的边的值,然后通过getEdge()方法输出edge的值,然后调用getArea方法求出s1的面积并输出。

2024-04-16 16:58:12 282

原创 java-学生类-构造函数

按照格式:类名 [name=, sex=, age=]输出。使用idea自动生成,然后在修改成该输出格式。String name、String sex、int age,所有的变量必须为私有(private)。•输入1行name age sex , 调用上面的有参构造函数新建对象。3.对每个属性生成setter/getter方法。能对name,sex,age赋值。

2024-04-16 16:46:54 245

原创 Java-03面向对象基础-03-形状

长方形类-Rectangle圆形类-Circleint radius,求周长。,求面积。toString方法,使用Eclipse自动生成。计算圆形的面积与周长,使用Math.PI。求周长和面积时,应先计算出其值(带小数位),然后强制转换为int再返回。

2024-04-16 16:36:53 269

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除