自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 笔记整理记录

笔记常见第一题类实例化过程二级目录三级目录常见第一题类实例化过程二级目录三级目录

2023-09-04 09:54:10 113

原创 java反转字符串

【代码】java反转字符串。

2023-07-30 08:50:44 155

原创 对称二叉树算法

给定一个二叉树,检查它是否是镜像对称的。力扣链接。

2023-04-25 21:38:24 108

原创 翻转二叉树算法

翻转一棵二叉树。力扣链接。

2023-04-23 21:05:34 64

原创 二叉树层序遍历算法

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。力扣链接。

2023-04-23 20:46:49 52

原创 二叉树的递归遍历算法

给你二叉树的根节点 root ,返回它节点值的 前,中,后序 遍历。前序遍历后序遍历中序遍历。

2023-04-23 17:38:50 52

原创 KMP算法笔记

当模式串的i和j位置的字符不相等时,我们需要回溯j的位置,即将j设为next[j]。如果j已经回溯到-1,说明当前i位置无法形成相等的前缀和后缀,此时将next[i]设为0,并将i加1,进入下一轮比较。总结:KMP算法是一种高效的字符串匹配算法,通过计算next数组,我们可以在失配时跳过不必要的字符比较,从而大大提高搜索效率。初始化两个指针i和j,其中i指向当前正在计算的next值的位置,j指向已知的最长相等前缀和后缀的末尾位置。当i和j位置的字符相等时,将i和j分别加1,继续进行下一轮比较。

2023-04-23 16:56:25 84

原创 左旋转字符串算法

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”限制:力扣链接。

2023-04-23 16:10:49 27

原创 翻转字符串里的单词算法

给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world!输出: “world!hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good example”输出: “example good a”解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

2023-04-21 19:09:59 39

原创 替换空格算法

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1: 输入:s = “We are happy.”输出:“We%20are%20happy.”力扣链接。

2023-04-21 11:19:33 35

原创 反转字符串II算法

给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例:输入: s = “abcdefg”, k = 2输出: “bacdfeg”力扣链接。

2023-04-21 10:16:00 34

原创 反转字符串算法

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]

2023-04-21 09:19:43 38

原创 环形链表II算法

给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。力扣链接。

2023-04-20 16:03:44 39

原创 链表相交算法

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构。

2023-04-20 15:58:21 51

原创 删除链表的倒数第N个节点算法

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]示例 2:输入:head = [1], n = 1 输出:[]示例 3:输入:head = [1,2], n = 1 输出:[1]力扣链接。

2023-04-20 15:51:55 41

原创 二叉树的递归遍历算法

/ 前序遍历·递归·LC144_二叉树的前序遍历 class Solution {return;} } // 中序遍历·递归·LC94_二叉树的中序遍历 class Solution {return res;return;// 注意这一句 inorder(root . right , list);} } // 后序遍历·递归·LC145_二叉树的后序遍历 class Solution {return res;return;// 注意这一句 } }

2023-04-20 09:27:53 36

原创 前 K 个高频元素算法

给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于Onlog⁡nOnlogn, n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。

2023-04-20 09:23:24 68

原创 滑动窗口最大值算法

给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。力扣链接。

2023-04-20 09:13:18 81

原创 逆波兰表达式求值算法

根据 逆波兰表示法,求表达式的值。有效的运算符包括 + , - , * , /。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。

2023-04-18 20:40:25 235

原创 删除字符串中的所有相邻重复项算法

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。

2023-04-18 20:05:44 208

原创 有效的括号算法

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”

2023-04-18 19:47:43 77

原创 用队列实现栈算法

使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空力扣链接。

2023-04-18 17:09:51 34

原创 java中的队列与栈

*offer(E e):**向队列中添加一个元素,如果队列已满,则返回 false;**poll():**删除并返回队列的头部元素,如果队列为空,则返回 null;**remove():**删除并返回队列的头部元素,如果队列为空,则抛出异常;**add(E e):**向队列中添加一个元素,如果队列已满,则抛出异常;**element():**返回队列的头部元素,如果队列为空,则抛出异常;**peek():**返回队列的头部元素,如果队列为空,则返回 null。**pop():**将栈顶元素弹出并返回;

2023-04-18 16:28:41 69

原创 用栈实现队列算法

力扣链接。

2023-04-18 15:41:41 29

原创 两两交换链表中的节点算法

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。力扣链接。

2023-04-18 09:47:18 40

原创 反转链表算法

题意:反转一个单链表。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL力扣链接。

2023-04-18 09:27:16 36

原创 四数之和算法

题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]

2023-04-16 19:47:33 39

原创 三数之和算法

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0?请你找出所有满足条件且不重复的三元组。注意: 答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]力扣链接。

2023-04-16 11:40:35 111

原创 赎金信算法

给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。

2023-04-16 09:41:35 46

原创 java中增强for的使用

增强for循环(也称为for-each循环)可以用于遍历任何实现了Java Iterable接口的集合类(如ArrayList、HashSet、LinkedList等),数组,以及其他一些数据结构,例如Map的entrySet()方法返回的Set集合。一般来说,只要对象实现了Iterable接口,就可以使用增强for循环遍历其中的元素。

2023-04-16 09:14:30 146

原创 四数相加||算法

给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果不会超过 2^31 - 1。例如:输入:输出:2解释:力扣链接。

2023-04-16 08:57:58 42

原创 两数之和算法

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]力扣链接。

2023-04-11 21:47:03 33

原创 快乐数算法

快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True;不是,则返回 False。示例:输入:19输出:true解释:力扣链接。

2023-04-11 21:19:30 114

原创 两个数组的交集算法

注意题目特意说明:输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序。这道题目,主要要学会使用一种哈希数据结构:HashSet,这个数据结构可以解决很多类似的问题。说明: 输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。题意:给定两个数组,编写一个函数来计算它们的交集。的函数,用于获取字符串的长度。认真看清楚传进来的参数叫什么名字。

2023-04-11 20:30:38 57

原创 有效字母异位词算法

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true示例 2: 输入: s = “rat”, t = “car” 输出: false说明: 你可以假设字符串只包含小写字母。力扣链接。

2023-04-11 16:54:12 28

原创 java中哈希表的介绍

尽管Hashtable在某些方面与HashMap相似,但现代Java应用程序更倾向于使用HashMap,因为它的性能更好(特别是在单线程环境下)并且支持更多的功能,例如null键和值、迭代器等。然而,在多线程环境下,如果需要保证线程安全,可以考虑使用ConcurrentHashMap,它是Java提供的线程安全的哈希表实现。其中,entry是每个键值对的引用,entry.getKey()方法用于获取键,entry.getValue()方法用于获取值。不保证元素的顺序,因此遍历时顺序可能不固定。

2023-04-11 16:13:27 223

原创 设计链表算法

在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。

2023-04-07 10:11:25 74

原创 移除链表元素算法

题意:删除链表中等于给定值 val 的所有节点。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]示例 2: 输入:head = [], val = 1 输出:[]示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]力扣链接。

2023-04-07 09:54:09 24

原创 螺旋矩阵II算法

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]力扣链接。

2023-04-06 21:34:46 32

原创 长度最小的子数组算法

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。力扣链接。

2023-04-06 20:12:40 59 1

空空如也

空空如也

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

TA关注的人

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