数据结构
文章平均质量分 55
炸娃(java)
哈哈哈
展开
-
平衡二叉树
一个有n个内部节点的红黑树的高度最多为2lg(n+1)2lg(n+1)2lg(n+1)从根到叶子的最长的可能路径不多于最短的可能路径的两倍长(由红黑树的定义4和5可得到)B树的节点结构其中PiP_iPi指向子节点,KiK_iKi是关键字并且Ki原创 2022-12-15 16:40:32 · 455 阅读 · 0 评论 -
剑指 Offer 44. 数字序列中某一位的数字
在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。知道在n在第x个长度为len的数上,也就知道了n所在的数的值(val),和n在第x个数上的哪个(t)位置上。使用以上代码我们可以求得n所处的位的数的长度,注意此时n已经不是从1开始的第n位数,而是从。以次类推,我们可以得到长度为k>1的数字上的每一位的处于。对于给定的n,先求它所处的数是几位数(len),我们可以不断的减去。]这个范围内,对于长度为2的数字上的每一位他们处于。它们的各个位上的数字处于[的1开始的第n位数。原创 2022-09-16 23:04:30 · 282 阅读 · 0 评论 -
牛顿迭代法求解平方根
注意牛顿迭代法不同于牛顿法,牛顿法进行一阶展开而牛顿迭代法进行二阶展开。原创 2022-07-23 18:18:28 · 278 阅读 · 0 评论 -
向下的路径节点之和
还有一种是从当前节点向上搜索,统计从当前节点线向上有多少条路径的和等于targetSum。对如targetSum=15,如下图,对于起始节点,我们要找有多少路径等于targetSum,也就等价于找有多少个preSum=Sum-targetSum,也就是统计Sum-targetSum出现的次数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。这题有两种解法,第一种是从根节点向叶节点搜索,此时有两种情况,考虑当前节点和不考虑当前节点。...原创 2022-07-19 12:09:24 · 170 阅读 · 0 评论 -
快速排序的一点细节
快速排序的执行步骤:(1)设置一个分界值(从待排序的数组中选),将分界值与数组左端点进行交换并将分界值存储起来。这时左端点就空了出来,从数组的最右边开始找并找到第一个比分界值小的元素,将这个元素放在左端点(注意左端点的元素已经存起来了)。这时右端点空了出来,然后再左端点开始寻找第一个比分界值大的元素,放在右端点。循环执行,最后会空出来一个位置,将分解值放在这个位置。(2)通(1),分界值左边都不大于它,右边都不小于它。对分解值得左右部分开别执行(1),当待处理元素个数为1时所有元素都是有序的。publ原创 2022-05-22 15:52:43 · 149 阅读 · 0 评论 -
整数分割(剪绳子)问题全网最详细解释
题目描述:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?链接:https://leetcode-cn.com/problems/integer-break/解法1:动态规划设f(n)f(n)f(n)代表长度为n的绳子的最优解。由于m≥0m\geq0m≥0,所以我们至少要切一刀,假设得到的两根绳子的长度分别是kkk,n−kn原创 2022-04-12 22:01:09 · 499 阅读 · 0 评论 -
约瑟夫环的求解
题目描述:0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。链接:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof建设f(n)f(n)f(n)表原创 2022-04-11 19:49:23 · 211 阅读 · 0 评论 -
n&(n-1)
n&(n-1)原创 2022-04-05 22:06:19 · 195 阅读 · 0 评论 -
leetcode平衡二叉树
leetcode平衡二叉树题目:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。链接:https://leetcode-cn.com/problems/balanced-binary-tree/题解:解法1,自顶向下,先判断左右子树是否平衡,再判断当前树是否平衡public boolean isBalanced(TreeNode root) { if(root == null) return true; ret原创 2022-04-04 22:17:33 · 435 阅读 · 0 评论 -
Letcode两个链表第一个公共节点
输入两个链表,返回它两的第一个公共节点原创 2022-03-25 22:51:05 · 844 阅读 · 0 评论 -
快速幂和模除
递归快速幂思想很简单,a9=a∗a8,a8=a4∗a4a^9=a*a^8,a^8=a^4*a^4a9=a∗a8,a8=a4∗a4public static int fastPower1(int a, int b){ if(b == 0) return 1; if(b%2 == 1) return a*fastPower1(a,b - 1); else{ int temp = fas.原创 2022-03-22 11:17:02 · 83 阅读 · 0 评论 -
二分查找算法
搜索区间为开区间 public static int binarySearch(int[] nums, int target){ int left = 0; int right = nums.length - 1; while(left <= right){ int mid = (left + right)/2; if(nums[mid] == target){ re原创 2022-03-18 13:58:10 · 257 阅读 · 0 评论