自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode235

LeetCode235二叉搜索树的公共祖先两次遍历关键是用一个List来记录祖先的路径class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { List<TreeNode> path_p = getPath(root, p); List<TreeNode> path_q = getPath(root, q)

2020-09-29 12:28:23 113

原创 LeetCode117

LeetCode117 填充每个节点的下一个右侧节点指针 II方法一:层次遍历对于每一层,我们都可以计算每一层的数量,在这一层中,我们进行next的赋值。 利用for循环就可以实现每一层的赋值 class Solution { public Node connect(Node root) { if (root == null) { return null; } Queue<Node> queue = new

2020-09-29 12:03:25 190

原创 利用栈实现后序遍历二叉树java

1.根节点入栈2.将根节点的左子树入栈,直到最左,没有左孩子为止3.得到栈顶元素的值,先不访问,判断栈顶元素是否存在右孩子,如果存在并且没有被访问,则将右孩子入栈,否则,就访问栈顶元素 其关键就在于需要一个前驱指针,用于判断是否该节点的右节点被访问过。public void postOrder(Node Root) { if(Root==null) { System.out.println("空树"); return; } Node tmp=Root; //当前节点

2020-09-29 10:28:20 1352

转载 LeetCode14

LeetCode14最长公共前缀链接 https://leetcode-cn.com/problems/longest-common-prefix/本题主要考察算法思想: 1.分治 2.二分 3.横向查找 4.纵向查找关键就在于怎么比较两个字符串 对于横向查找,就是两两比较,再与第三者比较,依次进行 对于纵向查找,应该选定一个字符,遍历剩余其他字符 分治是横向的一种,只不过拆分而已 二分这个思路就比较特别,根据mid位置来进行纵向查找。所以我们就需要掌握纵向思想和横向思想。那么我们

2020-09-25 10:39:08 102

转载 LeetCode55 && LeetCode45

LeetCode55跳跃游戏1:https://leetcode-cn.com/problems/jump-game/从前往后:对于每个能够到达的位置选取最大值,最后如果最大值能够到达数组长度初始值,数组在0位置,只能到达0位置。public class Solution { public boolean canJump(int[] nums) { int n = nums.length; int rightmost = 0; for (

2020-09-24 21:57:07 212

转载 Morris中序遍历解决LeetCode501

Morris中序遍历由于在遍历的时候,我们需要记住某种遍历次序的的后驱或者前驱结点,常见的递归和非递归都是采用栈的方式完成这个过程,有没有内部空间来记录这些后驱或者前驱结点呢?有,那就是叶结点的左,右孩子结点,因为叶结点的两个孩子结点都是空指针,如果利用好这些空间,我们就可以在O(1) 的空间完成遍历。基本思想Morris 中序遍历过程如下:1.当前结点的左孩子是否为空,若是则输出当前结点,更当前结点为当前结点的右孩子;否则进入2;2.在当前结点的左子树中寻找中序遍历下的前驱结点(左子

2020-09-24 14:40:49 134

转载 LeetCode13

LeetCode13罗马数字转整数其实就是一个遍历问题,对字符串从左到右进行遍历一、利用hashmap 进行字符串的处理二、利用switch 语句进行字符间的大小判断利用hashmap方法,进行遍历,空间复杂度较高class Solution { public int romanToInt(String s) { Map<String, Integer> map = new HashMap<>(); map.put("I", 1);

2020-09-24 10:36:20 199

转载 LeetCode12

LeetCode12整数转罗马数字对于这种算法题:一、如果题目要求所表示的数比较小的时候,我们可以采用==硬编码处理==也就是我们通常所说的暴力解法。二、贪心算法,每次都需要找到最大的罗马数字来表示整数。一、贪心算法先从罗马数到整数开始:歧义处理:我们用来决定的规则是从左到右选择尽可能大的符号表示。例如,上面以最大符号开头的表示法是以 C 开头的表示法。为了决定使用哪一个表示法,我们看下一个符号。其中两个为 X 值 10,一个 XL 值 40。因为 XL 更大,所以我们采用这种表示法

2020-09-24 09:02:18 145

原创 LeetCode11

LeetCode11连接 https://leetcode-cn.com/problems/container-with-most-water/一、暴力解法class Solution { public int maxArea(int[] height) { // int i=0; // int j = height.length-1; int min; int max=-1; for(int i=0;i<h

2020-09-23 20:56:44 105

原创 剑指offer正则表达式问题

LeetCode10:正则表达式匹配:=链接= https://leetcode-cn.com/problems/regular-expression-matching/作者:coder_hezi链接:https://leetcode-cn.com/problems/regular-expression-matching/solution/dong-tai-gui-hua-zui-xiang-xi-jie-da-you-jian-zhi-/来源:力扣(LeetCode)著作权归作者所有。商业转载请

2020-09-23 18:13:25 54

转载 LeetCode968监控二叉树

Leetcode968题目链接:https://leetcode-cn.com/problems/binary-tree-cameras/需要状态转移的方程确定了遍历顺序,再看看这个状态应该如何转移,先来看看每个节点可能有几种状态:可以说有如下三种:该节点无覆盖本节点有摄像头本节点有覆盖我们分别有三个数字来表示:0:该节点无覆盖1:本节点有摄像头2:本节点有覆盖// 空节点,该节点有覆盖if (cur == NULL) return 2; int left = traver

2020-09-23 15:22:52 120

空空如也

空空如也

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

TA关注的人

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