09 2020 档案
摘要:解法 从根节点开始,判断p,q是否存在于当前节点的左子树和右子树之中: 如果存在则当前节点为pq的最近公共节点如果p q 在当前节...
阅读全文
摘要:思路 从根节点开始遍历: 如果当前节点大于p,q 那么p,q的最近公共节点在当前节点的左子树如果当前节点小于p,q 那么p,q的最...
阅读全文
摘要:解法 要考虑清楚非法输入、溢出等问题 class Solution { public int strToInt(String...
阅读全文
摘要:解法 把A数组分为两部分: A[0,...,i-1]A[i+1,...,n-1] 数组B可以用一个矩阵创建: 另C[i]为矩阵第...
阅读全文
摘要:解法 使用位运算: 不计算进位,a与b异或完成二进制加法使用按位与计算哪一位相加会产生进位a b 相加结果与进位(按位与的结果左移...
阅读全文
摘要:解法 使用一个变量min保存数组前i-1个元素的最小值,扫描整个数组更新最小值的同时计算差值,通过打擂的方式获得最大利润。 cla...
阅读全文
摘要:解法一 环形链表 使用链表构造一个环,每个删除第m个数直到链表中剩下一个元素 class Solution { public ...
阅读全文
摘要:解法 class Solution { public boolean isStraight(int[] nums) { ...
阅读全文
摘要:解法一 递归 class Solution { // 提高程序扩展性 public int maxValue = 6;...
阅读全文
摘要:剑指 Offer 59 - I. 滑动窗口的最大值 解法 使用一个双端队列,头部保存当前滑动窗口的最大值。依次将数字从尾部加入队列...
阅读全文
摘要:解法 双指针 使用两个指针定位每个单词,然后加入StringBuffer,最后转为字符串。 class Solution { ...
阅读全文
摘要:解法 双指针 由于数组是递增排序的所以可以设置两个指针,一个指向头部,一个指向尾部。两指针所指元素相加,若大于目标值则跳转尾部指针...
阅读全文
摘要:解法 有两个数字只出现一次,其余数字出现两次,那么出现两次的数字异或之后为0相互抵消,剩下两个出现一次的数字由于一定不相同,所以异...
阅读全文
摘要:后续遍历 第一种解法是通过递归计算每个节点左右子树的深度,如果左右子树深度差都不超过1那么这棵树为平衡二叉树。 上面的解法或重...
阅读全文
摘要:递归 如果一棵二叉树没有左右子树那么深度为1;如果只有左子树那么深度为左子树深度加1;如果只有右子树那么深度为右子树深度加1;如果...
阅读全文
摘要:解法 中序遍历 通过右节点->根节点->左节点的顺序即可将二叉搜索树从大到小输出。可以通过一个计数器k进行计数当k为1时就到达了目...
阅读全文
摘要:二分查找 递归版 直观解法是求依据等差求和公式求0~n-1之和s1,然后求数组之和s2,通过s2-s1就能得到缺失值,但是这显然...
阅读全文
摘要:解法 二分查找 直观解法是从前开始遍历,找到目标第一次出现的位置和最后一次出现的位置,通过两次位置相减得到目标值出现的次数。时间...
阅读全文
摘要:解法一 第一次遍历得到链表长度,找到较长的链表 第二次遍历现在较长的链表上走几步,两个链表再同时遍历以同时达到尾节点。 /** *...
阅读全文
摘要:解法 可以使用归并排序的方法将数组分解成子数组,将子数组归并排序统计子数组的逆序数,最终统计整个数组的逆序数。 class So...
阅读全文
摘要:解法 直观解法是遍历每个字符,将当前字符和其余字符比较判断有无重复。 这种解法时间复杂度为 ...
阅读全文
摘要:解法 直观解法是遍历数字,判断每个数字是否是丑数(连续除2或3或5最后等于1)。这种解法比较直观但是每个数字都需要计算耗时太大。...
阅读全文
摘要:解法 动态规化 class Solution { public int lengthOfLongestSubstring(S...
阅读全文
摘要:解法 动态规化 先递归分析问题,定义函数 f ...
阅读全文
摘要:解法 动态规化 以12256为例从左边开始翻译可以分为两个子问题:翻译1,2256,翻译12,256;2256可以分解为翻译2,2...
阅读全文
摘要:解法一 回溯 直观的解法是求数组内数字的全排列然后比较每个排列的大小取出最小的一种。由于拼接起来的数字可能会非常大,所以会涉及大...
阅读全文
摘要:解法 直观解法是逐一枚举每个数字计算每个数字的数位和直到大于输入n,然后再从该数字中找出对应的那一位。 更快的解法是我们可以把...
阅读全文
摘要:递归 直观思路是遍历每一个数字,对每一个数字采用“%”“/”的方法取个位判断是否为1然后累加。由于数字n有O(logn)为所以时...
阅读全文
摘要:解法一 一次遍历 直观的解法是遍历数组的所有子数组打擂求解,但是这种方法空间复杂度为 ...
阅读全文
摘要:最大堆,最小堆 由于需要使用一个数据容器保存从数据流中得到的数据,那么对该容器插入数据与读取数据的时间复杂度有一定要求。 假设...
阅读全文
摘要:解法一 随机切分 随机抽取数组中一个元素进行切分并返回该元素下标 index: index == k-1 切分元素正好为第k个元素...
阅读全文
摘要:文章目录 解法类似题目组合组合总和组合总和||组合总和||| 解法 把字符串(abc)看成两部分:a|bc 第一个字符 ...
阅读全文