算法和数据结构
学习、巩固、练习
PursuitK
做最好的自己
展开
-
【二叉树】遍历及构造
int val;// 节点的值// 左子节点// 右子节点// 无参构造方法// 含值的构造方法// 含值、左子节点和右子节点的构造方法在上述代码中,我们定义了一个名为TreeNode的类,包含了节点的值(val)、左子节点(left)、右子节点(right)三个成员变量。同时,我们提供了三个构造方法,分别用于创建空节点、只含值的节点和含值、左右子节点的节点。通过前中、前后、中后遍历结果生成二叉树关键点在于确定左子树和右子树的边缘范围。原创 2024-02-21 15:13:05 · 560 阅读 · 0 评论 -
JZ66 机器人的运动范围
描述地上有一个rows行和cols列的方格。坐标从 [0,0] 到 [rows-1,cols-1]。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于threshold的格子。 例如,当threshold为18时,机器人能够进入方格[35,37],因为3+5+3+7 = 18。但是,它不能进入方格[35,38],因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?范围:1 <= rows, cols<= 10原创 2021-07-19 17:17:04 · 201 阅读 · 0 评论 -
剑指OfferJZ65 矩阵中的路径
描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如[[a,b,c,e],[s,f,c,s],[a,d,e,e]],矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。示例输入:[[a,b,c,e],[s,f原创 2021-07-19 16:46:28 · 142 阅读 · 0 评论 -
快速排序-三段区间
快速排序-三段区间快速排序是任意选择[left,right]区间内的某个值作为参考值,然后将小于该值的放在左边,大于该值的放在右边。在临界条件不满足的情况下,递归执行左区间和右区间的快排。三段区间使用两个游标将要排序的区间分为三部分:[left,seql]为小于该prios的元素,[seql+1,seqr]为等于该prios的元素,[seqr+1,right]为大于该prios的元素源代码:public void quickSort(int[] nums,int left,int right){原创 2021-05-20 16:01:07 · 507 阅读 · 0 评论 -
并查集
代码public class UnionFind { public static class Node<V>{ V value; public Node(V v) { value = v; } } public static class UnionSet<V>{ public HashMap<V, Node<V>> nodes; public HashMap<Node<V>, Node<原创 2021-04-27 15:20:18 · 127 阅读 · 0 评论 -
java稀疏数组
稀疏数组应用场景 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。处理方法记录数组一共有几行几列,有多少个不同的值。把具体不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。稀疏数组下标为0(第一行)存储的分别为原数组的行数、列数、和非零(不同值)元素个数。基本思路二维数据转稀疏数组的思路遍历原始的二维数组,得到有效数据的个数sum根据sum就可以创建稀疏数组sparseArr int[sum+1][3]将二维数组的有效数据存原创 2021-02-27 13:13:17 · 154 阅读 · 0 评论