自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 redis配置安装和使用

今天突发奇想,想玩玩redis,然后就简要记录一下玩的过程中发现的问题,总体来说,感觉redis很优雅!redis安装在官网上下载源码,以.tar.gz为结尾,貌似官网上没有Windows版的Linux上使用tar命令解压缩进入redis目录,然后查看README.md,里面介绍的非常详细依次调用make、make test、make install、然后进入util目录,执行./insta

2016-07-22 23:36:48 564

原创 String s1 = new String("abc")和String s2 = "abc"的区别

今天在看JVM的时候突然想到这样一个问题,即String s1 = new String("abc");String s2 = "abc";System.out.println(s1 == s2);//答案是false问题有两个:String s2 = “abc”时发生了什么?String s1 = new String(“abc”)时又做了什么?第二个问题是比较好回答的,根据官方文档:

2016-07-18 22:50:38 13796 2

原创 [leetcode-375]Guess Number Higher or Lower II(java)

这道题只要利用动态规划的算法,我们需要注意这样一个事实。 E(i,j) = min( k + max(E(i,k-1),E(k+1,j))(本来想用语言描述一下,但是怎么说,都表达不清楚) 其中E(i,j)表示范围在(i,j)之间的最优值。显然,我们最终要求的结果为E(1,n) k实际上是在遍历i,j时所猜的值,因此,k+max(E(i,k-1),E(k+1,j))实际上表示当猜数K时所需要的

2016-07-17 16:48:24 2069

原创 [leetcode-372]Super Pow(java)

思路:这道题实际是求a^b mode c的结果,因为大数取模时具有如下特征:a^b mod c = (a mod c)^c,也就是说在任何时候取模都可以。 那么我们可以计算出前10个数的计算结果,即a^0 mod 1337,,,,a^10 mod 1337。并保持到数组中。 然后对于指数b = b’ * 10 + b”,即a^b = a^(b’10 + b”) = (a^10) ^ b’ a^

2016-07-11 20:25:51 2135

原创 [leetcode-373]Find K Pairs with Smallest Sums(java)

思路:这道题就是简单地利用最小堆模型来完成。代码如下:public class Solution { public List<int[]> kSmallestPairs(int[] nums1, int[] nums2, int k) { List<int[]> res = new LinkedList<>(); Queue<int[]> queue = ne

2016-07-11 15:39:39 1177

原创 [leetcode-327]Count of Range Sum(java)

思路:首先想到的还是暴力搜索,这时时间复杂度为O(N2),N2的复杂度再降就是NlogN了,而是就是二分的思想,把大数据转化为求一堆小数据。想法很像归并排序,当然不是排序了。见代码二,AC。 时间复杂度分析:对问题研究为T(N) = 2*T(N/2) + (N/2)^2,这个公式计算之后仍然了O(N2)的复杂度。不过已经比暴力搜索快得多了。代码一(TLE)public class Solution

2016-07-06 22:46:43 2285

原创 [leetcode-354]Russian Doll Envelopes(java)

思路:首先最容易想到的就是暴力搜索,时间复杂度为O(n2),因此很容易超时。 在暴力搜索的时候,我们实际上是把字符串拼接之后再去判断是否为回文。那么换种思路,一个字符串确定之后,它所能形成的回文个数其实就已经确定了,因此,换种思路就是遍历每个字符串,然后在遍历每个字符串时找到它所所需要的回文样式,假设字符串最长为K,那么所可能形成的回文最大为2K,于是我们在遍历这2K个,看看它们算法在words中

2016-07-06 19:06:58 559

原创 [leetcode-354]Russian Doll Envelopes(java)

思路:首先对Envelope数组进行排序;然后剩下的就是一个二重迭代的过程了。public class Solution { class Envelope{ int width; int height; Envelope(int width,int height){ this.width = width;

2016-07-05 14:23:31 1582

原创 [leetcode-352]Data Stream as Disjoint Intervals(java)

思路:采用一个TreeMap的数据结构,因为TreeMap内部是红黑树的数据结构,整体是有序的,而且还可以很快的搜索到大于某个元素的项及小于某个元素的项。 但是不清楚为什么,我代码提交后一直提示Memory Limit Exceeded。我在网上找了一份相似的代码,见代码2,就可以AC,有知道原因的望不吝赐教。代码如下:/** * Definition for an interval. * p

2016-07-05 12:42:06 1046

原创 [leetcode-355]Design Twitter(java)

思路:想法很简单,维护一个人员表,维护一个twitter表代码如下:public class Twitter { class TwitterNode{ int userId; int twitterId; TwitterNode(int userId,int twitterId){ this.userId = userI

2016-07-03 16:27:34 1508

原创 [leetcode-357]Count Numbers with Unique Digits(java)

思路:这道题要求0<=x < 10^n的不重复数字的个数。因此,我们可以考虑1位时、2位时、3位时。。。然后累加起来。 注意此时首位不为0。 代码如下:public class Solution { public int countNumbersWithUniqueDigits(int n) { int sum = 0; if(n <= 10){

2016-07-03 15:53:10 799

原创 [leetcode-363]Max Sum of Rectangle No Larger Than K(java)

这道题我的想法就是使用暴力搜索,维护两个节点,第一个节点是矩阵的左上角,第二个节点是矩阵的右下角。然后在围起来的矩阵里面去计算面积。 假设矩阵的行为M,矩阵的列为N,那么上述算法的事件复杂度为O(MN*MN*MN)。因此肯定是不可行的。 于是只能采用用空间换取时间的方法,对于每个节点,将(0,0)看做矩阵的左上角,将当前节点看成矩阵的右下角,记录下当前节点对应的行和宽。 但是很不幸,代码TLE

2016-07-03 11:10:07 1000

原创 [leetcode-365]Water and Jug Problem(java)

思路:把这个问题抽象一下,其实可以等价变换为:ax+by=c(其中a,b分别为瓶x,y的容量,c为最后所需要的),所以原问题可以转换为:求在ax+by=c这条直线上,是否存在一个点,满足如下条件 ax+by=c 其中,x,y为整数那接下来的工作就是怎么找的问题了。我们假设apublic class Solution { public boolean canMeasureWater(int

2016-07-02 19:53:48 1130

原创 [leetcode-367]Valid Perfect Square(java)

这道题利用了如下一个数学公式 1+3+5+..+(2N-1) == N^2; 因此我们从1开始累加即可,加法的速度要比乘法的速度快得多,而且还不用考虑一不小心就溢出的问题。代码如下:public class Solution { public boolean isPerfectSquare(int num) { for(int i = 1;num > 0;i+=2)

2016-07-02 18:42:55 1136 2

原创 [leetcode-368]Largest Divisible Subset(java)

这道题其实利用的就是这样一个事实,如果b|a,c|b,那么c|a,于是就可以利用动态规划算法. 当算法运行到第i个时,如果它能整除第j个,即nums[i] % nums[j] == 0,且在j处之前有N个可被j整除的,那么在第i处就有N+1个。代码如下:public class Solution { public List<Integer> largestDivisibleSubset(i

2016-07-02 18:31:32 1548 3

原创 [leetcode-371]Sum of Two Integers(java)

思路:模拟硬件加法器的实现,两个bit位相加,当前位结果为:a^b^c(c为上位的输入) 进位:(c&(a^b))^(a^b),至于原因,请参考一下全加器public class Solution { public int getSum(int a, int b) { int result = 0; int tmp = 1; int prev

2016-07-01 16:39:21 1074

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除