Java小白zzm
Java小白zzm
全部文章
题解
归档
标签
去牛客网
登录
/
注册
Java小白zzm的博客
全部文章
/ 题解
(共21篇)
判断是否是对称二叉树
思路:判断二叉树是否对称可以转化为判断左子树和右子树是否对称。 boolean isSymmetrical(TreeNode pRoot) { if(pRoot==null)return true; return help(pRoot.left,pRoot.r...
Java
二叉树
题解
2020-07-30
0
572
二叉树的第k个节点
思路:方法1:使用二叉树的中序遍历非递归版,利用栈和一个计数变量得到第k小节点。 TreeNode KthNode(TreeNode pRoot, int k) { if(k==0)return null; Stack<TreeNode> stac...
Java
多解法
二叉树
题解
2020-07-30
0
746
剪绳子
思路:此题看到最大,首先想到动态规划。难点在于递推方程。我们假设n长度绳子的最大乘积为f(n),对于第一刀,我们有n-1种可能的选择,可推导出f(n)=max{f(i)*f(n-i)}; //动态规划 public int cutRope(int target){ //当长...
题解
2020-03-05
0
679
使用双端队列O(n)
思路:使用一个单调递减栈保存数组下标,用单调递减栈的原因是为了使栈的最左是当前窗口的最大值,如果用递增栈无法保证栈的右边是当前栈的最大值。循环遍历如果数据过期就弹出保证当前栈的最左边是该窗口最大值的坐标。 import java.util.*; public class Solution { ...
题解
2020-03-02
12
2108
数据流中的中位数
看大家都是用了优先队列,我一开始没有想到没用了快速排序中partition的思想,也能完成中位数的求解 import java.util.ArrayList; import java.util.List; public class Solution { private final List...
题解
2020-03-02
0
612
二叉树的下一个结点
思路:分为两种大的情况:如果该结点有右子树就循环查找左子树最左节点,如果该结点没有右子树就循环查找 它是它父亲节点的左孩子的节点, 如果遍历到根节点还没有找到,则返回null没有下一个节点了 public class Solution { public TreeLinkNode Get...
题解
2020-02-26
0
634
链表中环的入口结点
思路:这里可以自己画图列一下方程。快慢指针法,快指针一次走两步,慢指针一次走一步,当快慢指针第一次相遇时2(x+y)=n圈周长+x+y,这里x+y是慢指针走的长度,n圈周长+x+y是快指针走的长度x = n圈周长-y;即当快指针回到head和慢指针以同样速度每次走一步,最终会在链表中环的入口结点处相...
题解
2020-02-25
2
1300
正则表达式匹配
思路:递归计算,关键在于多种情况的分析。我将模式串的3种情况‘.’,‘字母相等’,‘字母不相等’分别讨论每种情况分为两种子情况,模式串的后一位是' * '和不是' * '。设置两个指针i,j表示str和Pattern的下标,还有一种特殊的情况当i==str.length时也可能返回true。我将这种...
题解
2020-02-24
4
973
构建乘积数组
思路:设置两个数组pre,post;前者保存i之前的所有乘积,后者保存i之后的所有乘积;为了计算方便pre【0】=1;post【A.length-1】=1那么B【i】=pre【i】*post【i】 public static int[] multiply(int[] A) { if...
题解
2020-02-23
0
781
孩子们的游戏(圆圈中最后剩下的数)
用数组模拟,边界条件做吐了,还是用库中的集合吧 public int LastRemaining_Solution(int n, int m) { if(n==0||m==0)return -1; int[] arr =new int[n]; int ...
题解
2020-02-21
1
841
首页
上一页
1
2
3
下一页
末页