Java练习题
文章平均质量分 65
小锦鲤yaw
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能
展开
-
螺旋矩阵Java
示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]按照顺序,先填第一行,然后往下拐,然后左拐,然后右拐又回到了第一行,循环往复,直到填完整个矩阵。原创 2023-08-30 19:18:12 · 574 阅读 · 0 评论 -
解数独(Java)
我们使用三个boolean数组,多开一个位置让下标与数字映射。37. 解数独t编写一个程序,通过填充空格来解决数独问题。数独部分空格内已填入了数字,空白格用。原创 2023-08-09 19:20:45 · 568 阅读 · 1 评论 -
【LeetCode】判断子序列
给定字符串s和t,判断s是否为t的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。方法一:使用双指针,每次从s开始判断,若相等同时++,若不相等,则指向t的指针++,最后如果指向t的指针走到了头,则退出循环,如果指向s的指针走到了头,则说名s是t的子序列原创 2023-04-19 18:38:07 · 364 阅读 · 0 评论 -
【LeetCode】复制带指针的随机链表
构造这个链表的 深拷贝。 深拷贝应该正好由 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 指针和 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 和 两个节点,其中 。那么在复制链表中对应的两个节点 和 ,同样有 。返回复制链表的头节点。用一个由 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 表示:你的代码 只 接受原链表的头节点 作为传原创 2023-04-06 15:01:14 · 243 阅读 · 2 评论 -
【LeetCode】不同的二叉搜索树(动态规划)
题目要求我们计算出由n个节点组成且节点值从1到n互不相同的二叉搜索树有多少种?我们假设n个结点的个数为SUM(n)令Count(i)为以i为根的二叉搜索树的个数SUM(n) = Count(1) +Count(2) +Count(3) + ...... +Count(n);当i为根节点时,其左子树节点个数为i-1个,右子树节点为n-i;原创 2023-04-05 21:49:21 · 398 阅读 · 2 评论 -
【LeetCode】两数相加(链表)
请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:示例 2:示例 3:提示:原创 2023-04-05 00:00:43 · 348 阅读 · 0 评论 -
【LeetCode】填充每个节点的下一个右侧节点指针
题目要求:给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有next 指针都被设置为 NULL。原创 2023-04-03 19:27:46 · 240 阅读 · 2 评论 -
【LeetCode】前 K 个高频元素(堆)
创建一个哈希表,用其存放数组中出现的元素以及每个元素出现的次数,先创建一个类numOfTimes , 其中有两个属性,一个key值,一个k值出现的次数,写一个类numsSortWayOfTimes继承Comparator方法接口,重写compare方法(对numOfTimes对象进行排序比较的方式---key值出现的次数times的大小),建立一个优先级队列大小为k,存储(元素与出现次数的)numOfTimes的对象遍历队列后就会将出现次数最多的元素对象留在了堆中原创 2023-04-01 21:34:29 · 623 阅读 · 1 评论 -
【LeetCode】最小K个数(排序,堆)
【代码】【LeetCode】最小K个数(排序,堆)原创 2023-04-01 17:08:56 · 173 阅读 · 8 评论 -
【七大排序】原地堆排序的实现(Java图解)
我们可以运用堆这个算法对数组进行排序的实现,比如创建一个新的堆,利用堆的add()遍历数组将元素加入堆中,但是这样会增加O(n)的辅助空间,那么有没有一种办法,利用堆使用O(1)的空间就实现数组排序呢?答案当然是有的,就是我们接下来讲的原地堆排序原创 2023-03-31 14:06:31 · 204 阅读 · 5 评论 -
【LeetCode】Morris解法求二叉树的前中后序遍历(带图解)
Morris的整体思路就是将,以某个根节点开始,找到它左子树的最右侧结点之后与当前根节点进行连接,连接之后cur指针可以完整地顺着节点遍历完整个子树,直至为空。原创 2023-03-30 14:38:39 · 259 阅读 · 3 评论 -
【LeetCode】二叉树的最近公共祖先Java
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)"示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 和节点 的最近公共祖先是节点 示例 2:输入:root = [3,5,1,6,原创 2023-03-29 12:46:09 · 139 阅读 · 0 评论 -
【LeetCode】根据序列构造二叉树 (前序中序)(中序后序)
【LeetCode】根据序列构造二叉树 (前序中序)(中序后序)原创 2023-03-29 11:42:31 · 579 阅读 · 0 评论 -
【LeetCode】根据二叉树创建字符串&&二叉树的构建以及遍历(递归)
对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。每个输出结果占一行。右边不为空,则左边需要一个空括号用来占位。输入包括1行字符串,长度不超过100。根节点为空,直接输出一个空字符串。左边不为空,加入左边的值。原创 2023-03-28 15:42:23 · 361 阅读 · 2 评论 -
【LeetCode】二叉树的后序遍历(递归,迭代)
遍历的顺序由从左到右修改为从右到左。判断该节点的右子树有没有被访问过。递归的时候隐式地维护了一个栈。链表来存储节点,并且改为头插。二叉树的前序以及中序遍历。显式地将这个栈模拟出来。原创 2023-03-27 11:46:42 · 735 阅读 · 6 评论 -
【LeetCode】二叉树的中序遍历(递归,迭代,Morris遍历)
Morris 遍历使用二叉树节点中大量指向 null 的指针,将当前根节点的最右侧节点的right指向当前根节点,省去了栈的维护,连接之后可以直接顺着节点遍历完整个二叉树,以下图为例:原创 2023-03-26 11:22:05 · 453 阅读 · 2 评论 -
【LeetCode】二叉树的前序遍历(递归,迭代,Morris 遍历)
Morris 遍历使用二叉树节点中大量指向 null 的指针,将当前根节点的最右侧节点的right指向当前根节点,省去了栈的维护,连接之后可以直接顺着节点遍历完整个二叉树,以下图为例:原创 2023-03-25 22:11:22 · 477 阅读 · 4 评论 -
【数据结构】二叉树的遍历以及基本操作
完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。有一个特殊的结点,称为根结点,根结点没有前驱结点。:若一个结点含有子结点,则这个结点称为其子结点的父结点;二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树。n 个结点的二叉树,当且仅当其每一个结点都与深度为K。:一个结点含有的子树的根结点称为该结点的子结点;每棵子树的根结点有且只有一个前驱,可以有。的结点一一对应时称之为完全二叉树。1.手动快速创建一棵简单的二叉树。:从根开始定义起,根为第。:树中结点的最大层次;原创 2023-03-25 12:23:00 · 800 阅读 · 2 评论 -
【LeetCode】用队列实现栈&用栈实现队列(三种方法)
【LeetCode】用队列实现栈&用栈实现队列(三种方法)原创 2023-03-23 15:10:48 · 301 阅读 · 2 评论 -
【LeetCode】重排链表(递归,线性表,快慢指针+链表反转+合并链表)
题目:给定一个单链表L的头节点head,单链表L表示为:L0→ L1→ … → Ln-1→ Ln请将其重新排列后变为:L0→Ln→L1→Ln-1→L2→Ln-2→ …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。原创 2023-03-23 14:56:52 · 201 阅读 · 5 评论 -
【LeetCode】最小栈,栈的压入、弹出序列,有效的括号,逆波兰表达式
由于题目规定 栈的所有数字均不相等 ,因此在循环入栈中,每个元素出栈的位置的可能性是唯一的(若有重复数字,则具有多个可出栈的位置)。因而,在遇到 “栈顶元素 === 弹出序列的当前元素” 就应立即执行出栈。: 每次入栈后,循环判断 “栈顶元素 === 弹出序列的当前元素” 是否成立,将符合弹出序列顺序的栈顶元素全部弹出。该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6。该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。--> 返回 -3.--> 返回 -2.原创 2023-03-22 14:14:27 · 76 阅读 · 2 评论 -
相交链表(双指针和哈希表)
相交链表(双指针和哈希表)原创 2023-03-21 08:00:00 · 161 阅读 · 1 评论 -
判断链表是否为环形链表(快慢指针,哈希表,节点自指)
val = x;* }* }*///判空//定义快慢指针while(fast!* val = x;* }* }*///判空= null){x.next = x;x = next;原创 2023-03-21 02:00:00 · 147 阅读 · 2 评论 -
合并两个有序链表(迭代和递归)
合并两个有序链表(迭代和递归)原创 2023-03-20 18:23:06 · 737 阅读 · 0 评论 -
206-反转链表(三种方法)
给你单链表的头节点head,请你反转链表,并返回反转后的链表。原创 2023-03-19 23:14:17 · 290 阅读 · 0 评论 -
动态规划---1.买卖股票的最佳时机 2.最大子序和
动态规划---1.买卖股票的最佳时机 2.最大子序和原创 2023-03-18 21:25:05 · 85 阅读 · 0 评论 -
删除排序链表中的重复元素 II(两种方法)
java递归链表原创 2023-03-17 16:41:59 · 384 阅读 · 2 评论 -
删除排序链表中的重复元素(两种方法)
java递归链表原创 2023-03-17 12:52:17 · 675 阅读 · 0 评论 -
移除链表元素
Java递归练习原创 2023-03-17 12:27:15 · 40 阅读 · 0 评论 -
蓝桥杯JavaB组真题解析A~E
蓝桥杯JavaB组解析原创 2023-03-09 23:16:12 · 1290 阅读 · 1 评论 -
Java数组元素右旋
java数组元素右旋原创 2023-03-04 23:57:05 · 99 阅读 · 0 评论 -
Java图书管理系统
Java图书管理系统原创 2023-03-01 18:10:25 · 121 阅读 · 0 评论