摘要: 问题描述: 实现一个栈,带有出栈(pop),入栈(push),取最小元素(getMin)三个方法。要保证这三个方法的时间复杂度都是O(1)。 问题分析: 假设存储元素的栈为ms栈; 主要的难点在于获取栈最小元素getMin()要保证其时间复杂度为O(1); 而且由于存在push()和pop()操作, 阅读全文
posted @ 2017-10-19 22:44 Qcer 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 问题一: 给定一个正整数N,求其二进制形式的第一个比特位1(从低位到高位的顺序)。 例如,给定正整数12,其低8位二进制表示为:00001100 从低位到高位的顺序,第一个1出现在第三位。 版本一: 最低位开始,针对每一位进行与(&)操作判断是否为1,直到遇到第一个1为止。 算法实现(版本一): 版 阅读全文
posted @ 2017-10-18 23:51 Qcer 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 书籍是人类进步的阶梯电梯(并没有) 推荐一些还算优质的书籍清单 大部分是我自己亲自读过的书(一般我会先考察电子版,觉得满意就会买纸质版回来读),真心觉得不错,剩余未读的书已纳入阅读候选区准备后续读完。 一本书能够出版,一定是通过作者、出版商反复琢磨推敲修订,在知识的准确性方面无疑是有保障的。另一方面 阅读全文
posted @ 2017-10-18 00:27 Qcer 阅读(420) 评论(0) 推荐(1) 编辑
摘要: 一、首先需要了解的几个前提 1、自动装箱过程是通过调用valueOf方法实现(如Integer.valueOf(10)),而拆箱过程是通过调用包装器的 xxxValue方法实现(如Integer.intValue(a))。 例如代码: 其自动装箱和拆箱的过程如下: 2、缓存 Integer、Shor 阅读全文
posted @ 2017-10-15 10:51 Qcer 阅读(3165) 评论(1) 推荐(0) 编辑
摘要: 一、测试代码 二、输出结果 三、浅析 1、可变参数的实际上调用过程实际上是将参数组织成一个数组,然后再出入该数组作为形参调用方法。 例如test(1,2,3)的执行过程为: 从newarray指令可以看出就是组织成数组的过程。2、test(int i)方法被重载了一个可变长度参数test(int.. 阅读全文
posted @ 2017-10-14 17:59 Qcer 阅读(962) 评论(0) 推荐(0) 编辑
摘要: 原文地址: http://blog.csdn.net/justloveyou_/article/details/72466105 JVM类加载机制主要包括两个问题:类加载的时机与步骤 和 类加载的方式。本文主要阐述了第一个问题,关于类加载的方式等方面的内容,包括JVM预定义的类加载器、双亲委派模型等 阅读全文
posted @ 2017-09-27 23:23 Qcer 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 一、问题描述 在一维数组(非有序状态)中找出一个元素pivot,使得其左边的元素均小于等于它,右边的元素均大于等于它,要求线性时间复杂度的算法. 二、算法分析 首先从左往右扫描整个数组,求出非递减序列,可以用布尔数组标记。然后在从右往左扫描,记录扫描过程中的最小值rightMin,在非递减序列序列中 阅读全文
posted @ 2017-09-24 12:23 Qcer 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 一、问题描述 给定一数组ary,元素两两组合,以min{ary[i],ary[j]}为高,以跨度(j-i)为宽可组成一个容器,求所有这样的容器的最大面积maxVolume。 二、算法分析 以数组ary为例:int[] ary = {3,2,6,8,1,7};如果从蛮力法的角度来看。相当于从以上6个元 阅读全文
posted @ 2017-09-24 11:00 Qcer 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 问题一:求sum值 描述:给定一有序序列ary和sum值,求序列中是否存在两元素e1和e2,其和刚好为sum。 算法思想:这是典型的两指针的用法。i指针从头部开始,j指针从尾部开始,相向移动,本质向讲,在移动过程中比较ary[i]+ary[j]与sum的大小,达到逐步排除元素的过程,缩短查找范围。最 阅读全文
posted @ 2017-09-24 00:27 Qcer 阅读(697) 评论(0) 推荐(0) 编辑
摘要: java实现: 注解都在代码里了! 阅读全文
posted @ 2017-09-23 12:12 Qcer 阅读(196) 评论(0) 推荐(0) 编辑