摘要:
排序+哈希表 思路 Arrays.sort()对数组排序 以与中位数差值的绝对值为Key,以记录所有对应的num的集合为Value,构造Map<Integer,List<Integer>>类型的map,用TreeMap实现(默认以key升序) 将map降序,遍历map 代码 //200ms publ 阅读全文
摘要:
哈希表+双指针 思路 先排序,后遍历 题目要求找出最长连续序列的长度,注意是找出,所以数组中的元素有可能是重复的。 如何排除重复值,很容易就想到Set集合,所以转成Set集合 后续的遍历用到双指针,为了便于操作又把Set集合转数组,再排序。 因为用到Arrays.sort(),其时间复杂度 为O(n 阅读全文
摘要:
模拟+记录路径 思路 模拟矩阵打印的路径,同时用数组record记录当前元素是否被访问过 注意边界处理,否则易越界。 代码 /** * 2ms O(mn) * 空间复杂度 O(mn) */ public static int[] spiralOrder(int[][] matrix) { if(ma 阅读全文
摘要:
哈希表+除法(违规) 思路 第一次遍历用哈希表记录数组出现 0的下标 ,同时计算非零元素的乘积。 第二次遍历数组,对数组元素为0的个数进行分类讨论,详细见代码 最致命的地方是 用到了除法 代码 /* *2ms O(n) */ public int[] productExceptSelf2(int[] 阅读全文
摘要:
前缀和 官方思路 双for肯定超时,通常涉及连续子数组问题的时候,可以使用前缀和来处理。 假设P[i]=A[0]+A[1]+...+A[i]。则连续子数组的和sum(i,j)可以写成P[j]-P[i-1] (0<i<j) 判断子数组的和能否被K整除的条件为 (P[j]-P[i])mod K == 0 阅读全文
摘要:
辅助栈 思路 核心难点是如何处理嵌套的[ ] ,需要从内向外生成与拼接字符串 算法流程 构建辅助栈stack,遍历字符串s中每个字符c 当c为数字时,将数字字符转化为multi,用于后续倍数计算; 当c为字母时,在res尾部添加c; 当c为[时,将当前multi和res入栈,并分别置空: 记录此[前 阅读全文
摘要:
思路 本题设置的条件很特殊 ,解法反常规,用时间换空间 我也只能想到哈希解法 该解法还不符合要求2 参考各种题解 收集以下解法(不局限于题设要求) 哈希 /** * 使用HashMap 2ms 但不能满足 要求2 */ public static int findDuplicate(int[] nu 阅读全文
摘要:
思路 用HashMap类型的cache记录Cache的数据 用List类型的record 记录Cache的各个元素使用情况 record有点类似队列,方便起见,下文就以队列称呼。 对于cache中已有的元素: 若进行get put操作,就将该元素移到队列(record)的最后(即表示该数据最近使用过 阅读全文
摘要:
[TOC] 位运算 消除 的二进制中 最后一个 例如,回文数(字符串) 分为奇回文和偶回文两类,通过异或运算得到结果 ,判断回文数(字符串)的条件为 字符与ASCII值相互转换 普通字符与ASCII值的相互转换 数字字符与数字的相互转换 数组翻转 java / 从下标t开始,数据都是逆序的,进行翻转 阅读全文
摘要:
节点定义 根节点到所有叶子节点的路径 根节点到指定节点的路径 参考链接: "https://blog.csdn.net/liuyi1207164339/article/details/50908308" "https://blog.csdn.net/better_xf/article/details 阅读全文