977.有序数组的平方 :https://leetcode.cn/problems/squares-of-a-sorted-array/ 心得:周末再写... public class Solution { public static void main(String[] args) { Solution solution = new Solution(); int[] ints = solution.sortedSquares(new int[]{-4, -1, 0, 3, 10}); for…
欢迎关注个人公众号:爱喝可可牛奶 LeetCode算法训练-回溯 491.递增子序列 46.全排列 47.全排列 II LeetCode 491. 递增子序列 分析 找出并返回所有数组中不同的递增子序列 绝对不能先升序 绝对不能先升序 绝对不能先升序 这样会改变原有数组的结构 子序列中元素在数组中不一定相邻 只要叶子节点,也就是path,一满足条件,直接加入res 注意去重used[] 数组只针对当前节点的后序节点 要在回溯函数中定义 画回溯树一看便知 代码 class Solution { p…
前言   考研结束半个月了,自己也简单休整了一波,估了一下分,应该能进复试,但还是感觉不够托底.不管怎样,要把代码能力和八股捡起来了,正好看到卡哥有这个算法训练营,遂果断参加,为机试和日后求职打下一个基础.   我之前断断续续地刷过一些LeetCode,但是不成体系,数量也少得可怜,才区区50+,在寻找暑期实习的过程中吃够了苦头,希望通过这次训练营得到一个长足的提升,养成自己写博客的习惯,慢慢提升自己的博客水准. 之前的LeetCode刷题分析 LeetCode 704 二分查找   二分是一个…
leetcode 977   分析1.0:   要求对平方后的int排序,而给定数组中元素可正可负,一开始有思维误区,觉得最小值一定在0左右徘徊,但数据可能并不包含0:遂继续思考,发现元素分布有三种情况,递增.递减以及类似二元凹函数,而题目要求O(n)的时间复杂度,不可能采用十大排序算法,于是接下来打算寻找最小值及其索引位置向两侧寻找次小值并存放进新数组,遍历元素时逐个使用Math.abs()函数确定大小,一开始采用指针移动的思想比较,index,index+1,index+2得到最小值及索引,…
基础知识 哈希 常见的结构(不要忘记数组) 数组 set (集合) map(映射) 注意 哈希冲突 哈希函数 LeetCode 242 分析1.0 HashMap<Character, Integer> 记录字符元素及其个数,再以字符序列对key进行排序,比较两个Map是否一致或者是遍历Map1的时候,在map2中对cur指针key查询对应个数 有一个用例未通过 原因: 引用类型比较值使用equals().方法map1.get(c).equals(map2.get(c))  class Sol…
基础知识 数据结构初始化 // 链表节点定义 public class ListNode { // 结点的值 int val; // 下一个结点 ListNode next; // 节点的构造函数(无参) public ListNode() { } // 节点的构造函数(有一个参数) public ListNode(int val) { this.val = val; } // 节点的构造函数(有两个参数) public ListNode(int val, ListNode next) { th…
LeetCode 235. 二叉搜索树的最近公共祖先 分析1.0  二叉搜索树根节点元素值大小介于子树之间,所以只要找到第一个介于他俩之间的节点就行 class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root.val >= p.val && root.val <= q.val){ return root; }else if(root.…
LeetCode 513.找树左下角的值 分析1.0 二叉树的 最底层 最左边 节点的值,层序遍历获取最后一层首个节点值,记录每一层的首个节点,当没有下一层时,返回这个节点 class Solution { ArrayDeque<TreeNode> queue = new ArrayDeque(); int res = 0; public int findBottomLeftValue(TreeNode root) { queue.offer(root); return levelOrder(…
LeetCode 110.平衡二叉树 分析1.0 求左子树高度和右子树高度,若高度差>1,则返回false,所以我递归了两遍 class Solution { public boolean isBalanced(TreeNode root) { if(root == null){ return true; } int left = postOrder(root.left); int right = postOrder(root.right); if(Math.abs(left-right)>1…
基础知识 二叉树的多种遍历方式,每种遍历方式各有其特点 LeetCode 104.二叉树的最大深度 分析1.0 往下遍历深度++,往上回溯深度-- class Solution { int deep = 0, max = 0; public int maxDepth(TreeNode root) { preOrder(root); return max; } void preOrder(TreeNode p){ if(p == null){ return; } deep++; max = Mat…