摘要:
leetcode:110. 平衡二叉树 - 力扣(LeetCode) class Solution { public boolean isBalanced(TreeNode root) { return getblan(root) != -1; } private int getblan(TreeN 阅读全文
摘要:
leetcode:104. 二叉树的最大深度 - 力扣(LeetCode) 思路:递归判断每次左右节点的是否存在,存在自然加一,return的1就是这样,判断子节点的左右两端是否有节点,统计有的节点数量,也就是左右的高度 class Solution { public int maxDepth(Tr 阅读全文
摘要:
leetcode:102. 二叉树的层序遍历 - 力扣(LeetCode) 思路:用队列长度控制弹栈的多少,不等于空时获取root,因为传了一个根肯定是1,接下来找左右节点,将根节点弹出,获取下一次的size,一直到空。。。 // 102.二叉树的层序遍历 class Solution { publ 阅读全文
摘要:
二叉树的定义: public class TreeNode{ int val; TreeNode Left; TreeNode Right; TreeNode(){} TreeNode( int val){ this.val = val; } public TreeNode(int val, Tre 阅读全文
摘要:
leetcode:239. 滑动窗口最大值 - 力扣(LeetCode) 思路:看了挺长时间才反应过来与暴力算法的区别。当遇到比上一个元素大的值时,将上一个元素剔除,小于时加入队列中,每次等于窗口长度时将顶端也就是最大值存起来 class Solution { public int[] maxSli 阅读全文
摘要:
Leetcode:20. 有效的括号 - 力扣(LeetCode) 思路:就是用栈存左右括号,都为0就说明true,不为零说明有没有匹配成功的括号,是false,思路没有问题,时间超时了,还得用C++..., java更好的思路如下:如果是左括号,push右括号,如果是右括号,判断是否与栈顶元素匹配 阅读全文
摘要:
队列的方法: 添加元素: add(E e): 将指定的元素添加到队列的尾部,如果队列已满则抛出异常。 offer(E e): 将指定的元素添加到队列的尾部,如果队列已满则返回false。 移除元素: remove(): 移除并返回队列的头部元素,如果队列为空则抛出异常。 poll(): 移除并返回队 阅读全文
摘要:
烤馍片算法(kmp):为了不让遍历的指针回退,每次不相等的时候找不相等之前的字符串的最长相等前后缀。i表示目标字符串,j表示需要在目标找到的字符串的指针。最长相等前后缀的长度就是之前有多少个与needle字符串相同,直接将j跳到上一元素位置记录的最长相等前后缀长度(next数组),这样i就可以一直+ 阅读全文
摘要:
LeetCode:344. 反转字符串 - 力扣(LeetCode) 思路: 双指针的想法用while循环遍历两侧指针,效率高 class Solution { public void reverseString(char[] s) { int i = 0,j = s.length - 1; whi 阅读全文
摘要:
LeetCode:454. 四数相加 II - 力扣(LeetCode) //getOrDefault是Java编程语言中的一种方法,用于从Map中检索与指定键关联的值。如果Map中不存在该键,则该方法返回一个默认值。方法签名如下: 思路:这道题和之前的两数相加很像,大体思路就是用map集合存对应的 阅读全文