leetcode
JIANG_RZJ
这个作者很懒,什么都没留下…
展开
-
Scramble String
package com.u6;/*leetcode题目: Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.Below is one possible representation of s1 = "g...原创 2018-09-11 20:21:53 · 830 阅读 · 0 评论 -
最大子数组问题
假设有一个n长度的数组, 求数组中最大的非空子数组.即子数组各个元素相加之和最大思路1使用分治策略求解, 找到数组的中间位置mid, 定义两边位置为left, right;在A[left, right] 中 要求解的子数组必然是以下三种情况之一:1.最大连续子数组在 A[left, mid] 的子数组中2.最大连续子数组在 A[mid+1, right] 的子数组中3.最大...原创 2018-09-22 17:25:59 · 1131 阅读 · 1 评论 -
Bloom Filter
它是一种二进制向量数据结构,用于判断一个元素 是否在集合中(判断某一个元素不在集合中有100%把握,判断元素在集合中 有一定的错误)。原理:使用哈希函数将某一个元素映射到数组上,并不像HasMap存储对应元素,而是存储0/1 状态位。当有大量元素时很大的几率发生哈希冲突,因此可能影响它判断一个元素在集合中。比如有一个元素实际上不在集合中,但是标志位可能由于哈希冲突置为1导致判断出错。解决方案:...原创 2019-03-03 20:50:55 · 177 阅读 · 0 评论 -
线性时间排序之基数排序和计数排序的应用
计数排序假设n个输入元素中的每一个都是在0到k区间内的一个整数,其中k为某个整数,当k=O(n)时,排序的运行时间为O(n);计数排序的基本思想是:对每一个输入元素,确定小于x的元素个数为y和自身的个数z,那么最后一个x就应该在y+z上.这种排序所需要O(n)的空间,但它是稳定的,且为O(n)基数排序基数排序 是先按最低有效位进行排序,接着以次高有效位进行排序,重复这一过程,直...原创 2018-12-23 18:55:47 · 332 阅读 · 1 评论 -
字符串匹配(KMP)
字符串匹配问题,求匹配串中模式串的位置.【1】暴力搜索, 每次匹配的过程假如匹配失败则 重新从模式串的开头位置和被匹配串的下一个位置开始匹配, 因为每个过程都是独立的,所以效率不高.【2】KMP算法, 问题是由模式串引起的,因为从被匹配串找到模式串, 一次字符比对过程可以帮助下一次匹配.2.1 最长的 前缀和后缀假如有 abcabcd 字符串, d字符前面有"abcabc"...原创 2019-03-22 16:25:33 · 165 阅读 · 0 评论 -
最长回文子串
不同于最长回文子序列, 它可以用动态规划来求解, 但是最长回文子串要求的子字符串在原字节数组中是连续的.【1】暴力求解例如,对于任何长度的字符串, aabaa, 在每一个字符的后加上一个特殊字符, 比如 a# a# b# a# a#, 这样就变成了偶数个,能够处理无法扩充的问题.a # a # b # a # a #1 3...原创 2019-03-22 22:11:16 · 143 阅读 · 0 评论 -
对BFPRT算法理解
对于求一个数组中第k小的数, 可以用快速排序的中间过程解决, 例如 找到的基准数的位置>k, 这时候就只需要对于前半部分再进行行 一次这个中间过程.直到找到 第K个数.然而问题是,快速排序的基准数如果选的不好,范围就缩小不了1/2甚至还没有, 时间复杂度可能会到o(n^2).所以 关于 选择基准数 可以不随机选,而是通过如下步骤:[1] 将数组每5个分成一组, 可能最后一组不足5...原创 2019-03-23 09:01:32 · 231 阅读 · 0 评论 -
二叉树遍历
morris遍历二叉树, 做到消耗空间为o(1):思路: 当前结点cur[1] 如果当前结点没有左孩子, cur = cur -> right;[2] 如果当前结点有左孩子, 找到左子树的最右结点 mostRight, 如果 [2.1] mostRight.right == cur, 这表示当前是第二次访问cur结点, 表示cur的左子树全部遍历完毕. 接着...原创 2019-03-24 07:56:10 · 162 阅读 · 0 评论