02 2021 档案

摘要:题目目录: 1、给定一个整数n,判断该数是否是回文数 2、给定一个数组arr,和一个整数aim,请返回哪两个位置的数可以加出aim来。 3、按给定规律调整链表 4、把一棵搜索二叉树,转化成有序的双向链表 5、给定数组arr和整数num,共返回有多少个子数组满足如下情况:max(arr[i..j]) 阅读全文
posted @ 2021-02-24 14:41 γGama 阅读(74) 评论(0) 推荐(0)
摘要:给一个字符串str,代表一个整数,找到除了这个数之外,绝对值和这个数相差最小的回文数。 例如: str = “123” 返回“121” 注意:假设字符串str一定能变成long类型 不一定将中间对称过来的数就是距离原数相差最小的,例如1998,对称过来后是1991,但距离其最近的数其实是2002 思 阅读全文
posted @ 2021-02-24 14:13 γGama 阅读(145) 评论(0) 推荐(0)
摘要:题目:给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则: 每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明: 如果不存在这样的转换序列,返回一个空列表。所有 阅读全文
posted @ 2021-02-23 21:28 γGama 阅读(708) 评论(0) 推荐(0)
摘要:目录: 1、容器储水问题 2、给定一个数组arr,返回所有子数组的累加和中,最大的累加和 3、生成窗口最大值数组 4、给定两个字符串str1和str2,判断str2是不是由str1循环右移得到的 5、给定一个字符串str,和一个整数k,返回str向右循环右移k位后的结果 6、给定一个字符串类型的数组 阅读全文
posted @ 2021-02-20 19:00 γGama 阅读(211) 评论(0) 推荐(0)
摘要:算法思想: 对于求数组中第k小的元素的问题,我们已经有很好的常规算法了,这个算法在最好的情况下时间复杂度是O(n),但在最坏的情况下是O(n^2)的。 bfprt算法就是在这个基础上改进的。它通过中位数概念选取最合适的划分值作为划分依据。 常规解法: 我们随机在数组中选择一个数作为划分值(numbe 阅读全文
posted @ 2021-02-13 15:24 γGama 阅读(303) 评论(0) 推荐(0)
摘要:算法功能 回文字符串的通俗定义是:如果一个字符串正着读或反着读都一样,那么称这个字符串为回文字符串。 Manacher的作用就是在O(N)的时间复杂度下求出以每个位置为回文中心的回文半径。 核心原理是动态规划 【Code】 //处理字符串,为字符串每个字符左右填充符号 public static c 阅读全文
posted @ 2021-02-13 15:06 γGama 阅读(95) 评论(0) 推荐(0)
摘要:1 阅读全文
posted @ 2021-02-13 14:58 γGama 阅读(45) 评论(0) 推荐(0)
摘要:morris遍历是二叉树遍历算法的超强进阶算法,跟递归、非递归(栈实现)的空间复杂度,morris遍历可以将非递归遍历中的空间复杂度降为O(1)。从而实现时间复杂度为O(N),而空间复杂度为O(1)的精妙算法。morris遍历利用的是树的叶节点左右孩子为空(树的大量空闲指针),实现空间开销的极限缩减 阅读全文
posted @ 2021-02-13 14:57 γGama 阅读(828) 评论(0) 推荐(0)
摘要:暴力递归: 1,把问题转化为规模缩小了的同类问题的子问题 2,有明确的不需要继续进行递归的条件(base case) 3,有当得到了子问题的结果之后的决策过程 4,不记录每一个子问题的解 动态规划: 1,从暴力递归中来 2,将每一个子问题的解记录下来,避免重复计算 3,把暴力递归的过程,抽象成了状态 阅读全文
posted @ 2021-02-07 20:44 γGama 阅读(131) 评论(0) 推荐(0)
摘要:【图的存储结构】 分别由:图结构+边结构+结点结构组成 【Code】 public class GraphAchieve { public static class node { public int value;//点的权重 public int in;//点的入度 public int out; 阅读全文
posted @ 2021-02-06 12:00 γGama 阅读(286) 评论(0) 推荐(0)
摘要:百度百科: 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 它有3个基本性质: 阅读全文
posted @ 2021-02-06 11:22 γGama 阅读(139) 评论(0) 推荐(0)
摘要:并查集: 每个集都有一个节点作为该集合的代表,查两元素是否属于同个集合,只需对两元素顺着parent指针往上找,找到某节点其parent指针指向自己时停止,对比两元素的找到节点,如相同则两元素属于同个集合。 关键点:查询集合代表点且查到时,不着急返回该代表点,而是将沿途查上来的节点的parent指针 阅读全文
posted @ 2021-02-04 20:15 γGama 阅读(145) 评论(0) 推荐(0)
摘要:写在开头: 非递归同样需要用到栈结构去实现类似递归的这样一个操作,递归写法只不过很多步骤都由系统栈替我们完成,本质其实一样。 【先序】 【Code】 //先序遍历 public static void xianxubianli(Node head) { if(head!=null) { Stack< 阅读全文
posted @ 2021-02-04 19:43 γGama 阅读(96) 评论(0) 推荐(0)
摘要:随时找到数据流的中位数 【题目】 有一个源源不断地吐出整数的数据流,假设你有足够的空间来保存吐出的数。请设计一个名叫MedianHolder的结构,MedianHolder可以随时取得之前吐出所有数的中位数。 【要求】 1.如果MedianHolder已经保存了吐出的N个数,那么任意时刻将一个新数加 阅读全文
posted @ 2021-02-03 21:36 γGama 阅读(126) 评论(0) 推荐(0)
摘要:布隆过滤器: 直观的说,bloom算法类似一个hash set,用来判断某个元素(key)是否在某个集合中。和一般的hash set不同的是,这个算法无需存储key的值,对于每个key,只需要k个比特位,每个存储一个标志,用来判断key是否在集合中。 算法:1. 首先需要k个hash函数,每个函数可 阅读全文
posted @ 2021-02-03 20:05 γGama 阅读(286) 评论(0) 推荐(0)