自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java集合中HashSet的实现

通过查看HashSet的源码可以看到,HashSet是在HashMap上做了一层封装,HashSet的所有方法都是通过调用HashMap的相应方法实现的,但是在对外表现上,HashMap和HashSet还是有不同的,HashMap存储的是key-value对,而HashSet中存储的单一的value,那么在通过调用HashMap实现时还是要做一些处理。下面是实现源码的一些片段:声明一个...

2019-08-05 20:45:00 179

原创 java集合HashMap中链表树化的条件

在HashMap具体实现类中,有两个变量:第一个变量是链表树化的阈值,在每次插入操作时,会检查链表中元素的个数是否达到阈值,达到阈值以后才会进行树化操作。而进行树化操作的第一个判断就是哈希数组的容量是否大于MIN_TREEIFY_CAPACITY,如果小于,进行扩容操作,而不是树化操作。代码片段如下:综上:哈希表的链表树化成红黑树有 两个条件:1. 链表长...

2019-08-05 20:21:48 4240 4

转载 Java POI 设置Excel级联菜单demo

参考博客:https://blog.csdn.net/readiay/article/details/52397419Apache的相关类的文档说明:http://poi.apache.org/apidocs/dev/org/apache/poi/hssf/usermodel/package-summary.html此博客以省市区为例,展示了下拉列表,有效性验证,级联操作的示例,很详细。...

2019-08-04 13:07:10 1160 1

原创 Java设置Excel下拉列表

Excel在office2007之前和之后的格式不一样,07之前的后缀是.xls,07及07之后.xlsx,针对不同的格式,apache提供了不同的类来操作:HSSF来操作07之前的,XSSF来操作07及07之后。在pom.xml中要对包进行依赖,一定要两个包都要引入,因为这两个包有依赖关系: <dependency> <group...

2019-08-04 13:06:12 7543

原创 Java集合HashMap的put操作

Java中HashMap的实现并不是简单的开链法,而是在开链法的基础上加上了搜索树的方法。默认负载因子:0.75默认数组大小:16上述两个参数都可以利用构造参数提供自定义的容量和负载因子,需要注意的是如果自定义容量,容量会提升到2的幂次,不一定是自定义的大小。扩容操作: 数组扩展为原来的2倍的容量,原来位置的元素要么还在原来的位置,要么在2倍偏移的位置。put()操作:利用ha...

2019-08-04 13:05:47 523

原创 Java中ArrayDeque的实现

ArrayDeque采用循环数组的形式实现。ArrayDeque提供了三个构造函数。1. 无参构造器:申请大小为16的数组2. 提供需要空间大小的有参构造器:利用allocateElements申请空间3. 利用现有集合的有参构造器:同样利用allocateElements申请空间,再将现有集合中的元素拷贝到数组中allocateElements(int numEl...

2019-06-16 17:27:36 541

原创 登录mysql数据库提示unknown option '-----------------------------------------'

按照网上大家所说的配置mysql数据库免安装版,却出现了一个大家都没怎么碰到过的问题:用命令mysql -u root -p进行数据库登录时,提示 unknown option ‘-------------------------------’原因是自己添加的my.ini文件不正确,尤其像我这样按照CSDN博客安装的,在CSDN上复制配置信息时,会默认多复制好多CSDN相关的信息,因为记事...

2019-06-10 15:57:37 21058 8

原创 Java中PriorityQueue相关

优先队列:依靠堆数据结构来实现,因为堆又是完全二叉树,采用数组来存储,父子关系依靠下标来维系。Java中,如果调用无参构造函数,默认生成一个能够容纳11个元素的数组,如果不指定比较器,按照小根堆来排列。扩容操作:PriorityQueue的扩容选择和ArrayList(扩大到原来容量的1.5倍),Vector(默认扩容到原容量的2倍,如果指定了扩容大小,就扩容指定大小)的策略都不同,Pri...

2019-06-09 16:01:22 126

原创 Java集合实现类中的变量modCount

在Java集合的实现中,有一个modCount变量,这个变量在ArrayList中提供了比较详细的解释:简单来说,就是这个变量表示了列表结构性改变的次数,结构性改变指的是列表大小发生变化,或者是其他方式改变列表内容,可能导致在遍历列表过程中得到错误的结果。这个变量被iterator对象和list iterator对象使用(这两个对象在iterator()方法和listIterator(...

2019-06-09 09:28:24 389

原创 Java中Stack类相关

Java中Stack类是借助Vector类实现的,具体来说是继承Vector类:Stack类在Vector类的基础上提供了在Vector尾端进行操作的函数:push(), pop(), peek(), empty(), search()特殊地:search函数对栈中元素进行搜索,栈顶元素是位置1,向下递增。但是因为Stack类是继承Vector类的,所以Stack对象也能够使用Ve...

2019-06-08 23:20:52 306

原创 Java中Vector和ArrayList的不同

1. Vector中方法都用synchronized关键字修饰,线程安全2. 使用ArrayList时,如果不指定大小,会生成一个空的数组; 使用Vector时,如果不指定大小,会默认生成一个10个元素大小的数组2. Vector 实现类中有一个变量 capacityIncrement 用来表示每次容量自增时应该增加多少,如果不指定,默认为0在扩容时,会判断,如果指定了cap...

2019-06-08 20:24:50 640

原创 Java中LinkedList的迭代器

类似于ArrayList的迭代器,LinkedList的迭代器采用三个成员变量:lastReturned, next, nextIndex.所有的操作都是在lastReturned指向的节点上进行操作,next指向下一个节点。不论是通过有参还是无参的构造函数获得容器的迭代器,初始情况下lastReturned都被设置为null。要通过迭代器进行容器元素的修改时,必须先调用next()方...

2019-06-08 19:45:12 1876

原创 Java中LinkedList容器

Java中LinkedList容器是以双向链表形式(头节点的前驱为null, 尾节点的后继为null)实现的,以便于快速的插入和删除元素。三个核心的成员变量:size:链表中节点个数,first:链表头节点, last: 链表尾节点操作都是在遍历的基础上进行节点指针的调整。例如:根据索引返回对象的函数 node(int index)会先判断索引值在整个链表的中间靠前还是靠后,靠前就...

2019-06-08 18:27:12 174

原创 Java集合ArrayList的迭代器

返回迭代器的函数1. public ListIterator<E> listIterator(int index)2. public ListIterator<E> listIterator()3. public Iteraotr<E> iterator()前两个函数返回针对ArrayList的迭代器,而第三个函数返回一个迭代器的基类对象。...

2019-06-08 16:18:33 521

原创 no match for 'operator+' (operand types are 'basic_string<char>' and 'int')

之前在写代码的时候都没注意过这个问题,我想将一个数字变成字符接在一个字符串后面,如下所示:int main(){ string res = "doudou"; res = res + ('0' + 1); cout &lt;&lt; res &lt;&lt; endl; return 0;}但是编译发生错误:no match for 'operator...

2018-09-27 16:39:17 27841

原创 C++提供的对数指数操作

C++提供的对数指数操作在&lt;cmath&gt;头文件中对数函数提供了两种版本:以e为底和以10为底,并且每个都有多个重载版本以e为底: log(n);以10为底: log10(n);如果要想自定义m为底,就要自己运用 log(n) / log(m) 来计算具体可以参考:http://www.cplusplus.com/reference/cmath/log/指数操...

2018-09-05 13:59:45 2622

原创 同一个表达式中的前置++ 前置-- 后置++ 后置--的执行情况

这两天在写解析协议的代码的时候,想要一条语句处理两个字节的内容时,就在一条语句中写了两个后置++,结果发现运行结果出错,所以特地过来把这些搞搞清楚。以代码为例: 一条语句中都是后置++int main(){ int i=0; int a[] = {1,2,3,4}; int sum = a[i++] + a[i++]; cout &...

2018-09-01 17:07:45 888

原创 4的幂(Power of Four)

题目描述:在网上看到一个特别棒的思路,在这里记录一下。思路: 如果使用循环或者递归的话,此题就容易许多,如果能整除,就一直整除下去,直到不能整除,判断是不是1即可。不使用循环的情况,是4的幂一定就是2的幂,但是是2的幂不一定是4的幂,是2的幂满足二进制表示中只有一个1,但是判断是否是4的幂,在此条件的基础上还要在满足另一个条件:1的位数一定要是在奇数位。判断条件:先判断是不是2...

2018-09-01 16:15:18 1290

原创 lintcode904-加一链表

题目描述:给定一个非负整数,这个整数表示为一个非空的单链表,每个节点表示这个整数的一位。返回这个整数加一。除了0本身,所有数字在最高位前都没有0。列表的头节点存的是这个整数的最高位。样例:给出链表1 -&gt; 2 -&gt; 3 -&gt; null,返回 1 -&gt; 2 -&gt; 4 -&gt; null。 思路:看到这个每个节点表示一位,主要难点在于链表表示...

2018-08-06 16:56:55 200

原创 lintcode643-Longest Absolute File Path

题目描述:思路:要找到最长路径的字符个数,需要逐层计算,记录最长的长度即可。         首先根据换行符将字符串拆成一个个的片段,存起来分别判断,在拆分的过程中直接去掉换行符。         层数的判断可以根据每个字符片段开始的‘\t’个数。         如果当前片段没有字符‘.’,当前表示一个文件夹,用一个数组存起来当前的长度。                否...

2018-08-04 15:52:42 160

原创 lintcode1314-Power of Two

题目描述:判断是否是2的幂,从二进制角度考虑,一个数的二进制表示中只有一位为1时,这个数就是2的幂,即只要循环遍历一下数的二进制位数,判断1是否只出现了一次。代码:bool isPowerOfTwo(int n) { // Write your code here if(n &lt; 0) return false; if(n...

2018-07-03 13:27:19 116

原创 lintcode1259-Integer Replacement

题目描述:求最小的转换次数。这道题最初的想法就是把所有的情况都算一下,然后比较得出最小的。可以递归解决,直到N变成了1。递归想着要耗费大量时间,没想到也通过了,哈哈。代码:int integerReplacement(int n) { // Write your code here //普通递归思想,可以通过 if(n &lt;= 1) ...

2018-07-03 12:10:24 139

原创 lintcode1017-Similar RGB Color

题目描述:本题中对于一个给定的RGB字符串,找到一个形如“#AABBCC”的字符串使得similarity最大。通过观察可以发现,两两一组,可以分别找差值最小的,因为都是负的,所以肯定最后结果是最大的。当分离出两两一组时,当两个字母相同时,最相近的就是本身,直接放进结果中即可,如果两个字母不相同,无非就是三种情况:重复第一个字母两次, 第一个字母减一重复两次, 第一个字母加一重复两次。如果第一个字...

2018-07-02 12:32:46 242

原创 lintcode514-栅栏染色

题目描述:刚看到题目也是不知道怎么做,就尝试了一下过程,发现有规律可循:在第1根柱子,有K种方法;到了第2根柱子,因为允许可以有两个颜色重复,所以就有了K*K中方法;但是到了第3根柱子,就要考虑分情况了:如果第3根柱子和第2根柱子的颜色相同,方法数就是第2根柱子的方法数,这时就要求第2根柱子和第1根不能是一样的颜色,所以方法数变成k*(K-1)种,这也是第3根柱子的方法数;如果第3根柱子和第2根柱...

2018-07-02 10:52:29 225

原创 lintcode190-下一个排列

题目描述:题目思路:首先理解排列,简单认为排列起点为序列的全升序,终点是序列的全降序,(其实任何一个位置都可以作为起点)。从序列的后方逐渐往前,最终包括整个序列,思考当某一个子序列已经排列成全降序时,下一个排列就是从子序列中所有大于子序列前一个元素的元素中找到最小的,两者进行置换,然后将子序列排列成全升序。例:序列5,4,7,5,3,2全降序的子序列为7,5,3,2子序列前一个元素为4,子序列中大...

2018-06-27 17:24:32 135

原创 lintcode392-打劫房屋

题目描述:唯一约束是不能连续拿两个房间的钱,只能是隔一个或者更多。此题可以利用动态规划的想法,利用一个数组arr, arr[i]表示i房间及其以前的可以拿到的最多金钱。    此时针对第i个房间,就有两种情况:1)拿第i个房间的钱,那么就不能拿i-1房间,拿到的钱就是 arr[i-2] + A[i]                                                  ...

2018-05-30 13:30:16 166

原创 lintcode540-左旋右旋迭代器

题目描述:简单暴力的求解方法:在生成该迭代器的构造函数中,就将传入的两个vector按照要求的顺序放入一个vector中,剩下的两个方法就是判断下标是否到达数组尾部,返回当前下标的数组元素。代码:class ZigzagIterator {public: /* * @param v1: A 1d vector * @param v2: A 1d vector */...

2018-05-30 12:27:16 351

原创 lintcode448-Inorder Successor in BST

题目描述:题目意思在BST中找到中序遍历中某一个节点的后继节点。根据BST的特点,BST的中序遍历是一个有序序列。在此序列中找某一节点的后继,一种普通的方法就是中序遍历该BST,将结果存在数组中,二分查找目标节点的值,然后后一个就是该节点的后继,如果目标节点是数组最后一个元素,则该节点没有后继,返回NULL。本题想要得到O(h)的复杂度,h为树高。即从树根节点遍历到叶子节点的过程。思路:cur当前...

2018-05-29 18:38:15 239

原创 list容器的erase函数和remove函数

由于list容器的特殊实现,所以list容器实现了自己的erase函数和remove函数。erase函数的函数声明:可以看到函数的参数是由迭代器给出的。由迭代器给出删除的位置或者区间。    1) Removes from the list container either a single element (position) or a range of elements ([first,las...

2018-05-29 10:34:18 2561 1

原创 lintcode202-线段树的查询

题目描述:思路:在查询过程中,可能会遇到三种情况,目标区间在本区间中点的左边; 在本区间中点的右边; 跨越本区间的中点。在左边的情况:从当前节点移动到左孩子节点。在右边的情况:从当前节点移动到右孩子节点。在中间的情况:从中间分开,两边都要考虑,取其大者。递归进行。代码:int query(SegmentTreeNode * root, int start, int end) { /...

2018-05-28 21:30:31 162

原创 lintcode203-线段树的修改

题目描述:思路:线段树的叶子节点就是数组中每一个位置的元素值,所以先找到要修改的位置,即先到达要修改的叶子节点,修改该节点的max值,然后再从叶子节点回到根节点,返回过程中,比较节点的左右孩子的max值,取两者较大者作为本节点的max值,这样无论value值和max值的大小关系,都作为一种情况考虑。代码:void modify(SegmentTreeNode * root, int index, ...

2018-05-28 21:25:43 131

原创 lintcode363-接雨水

题目描述:要求能接水的数量。每个位置能不能接水,能接多少水,取决于该位置左右两边的最高高度中的较小者。如果该位置就是从左边开始的最高高度,则该位置不能接水,如果该位置不是左右两边的最高高度,则该位置能接的水量就是左右最高高度中的较小者减去该位置的高度。最左边和最右边不管是不是最高高度,都不能接水。为能快速得到某一位置左边的最高高度和右边的最高高度,采用两个数组left和right。left[i] ...

2018-05-17 19:50:34 197

原创 lintcode370-将表达式转换为逆波兰表达式

题目描述:将表达式处理成逆波兰表达式,主要处理的就是优先级问题,将括号去掉,用操作符的先后顺序表示运算顺序。逆波兰表达式中操作数的顺序和原表达式中操作数的顺序是一样的,也就是说在原表达式遍历过程中,如果判断是操作数,直接放入结果中。重点是操作符的放入顺序,这个是决定运算顺序的关键。操作符一共有 ( + - * / ) 六种, 遍历到的操作符和当前栈顶操作符进行比较。当遍历到的操作符比栈顶的操作符优...

2018-05-16 20:57:51 228

原创 lintcode424-逆波兰表达式求值

题目描述:给出已有的逆波兰表达式,根据运算规则计算是比较简单的,遇到的是操作数,string转换成int,压入到栈中,遇到的是操作符时,从栈中弹出两个操作数,进行计算,再把计算结果压入到栈中,遍历完一遍时,栈中的值就是整个表达式的结果。不需要考虑优先级问题以及括号问题。此处需要注意的一点是第一次从栈中弹出的是第二个操作数,第二次弹出的才是第一个操作数。这个会对减法和除法产生影响。代码:int ev...

2018-05-16 19:25:03 121

原创 lintcode189-丢失的第一个正整数

题目描述:如果不做空间的要求,可以利用哈希的思想,元素i放在下标为i的位置。然后遍历辅助空间,第一个没有赋值的就是答案。要求常数级别的空间,排序就只能在原数组上进行。不是抹掉原来位置的元素,而是交换,使得下标为i的位置元素为i+1(正整数从1开始). 如果数组元素的范围都是数组长度范围内,交换完成以后,每一个元素都被交换到正确的位置。如果有大于数组长度的元素,那1~数组长度范围内肯定有空缺,交换完...

2018-05-15 18:44:51 220

原创 lintcode137-克隆图

题目描述:本题重点在于避免重复生成节点,避免在构造节点的相邻节点时插入重复节点。为避免超时问题,在遍历图的过程中,就生成新节点,并构造节点的相邻节点。代码:UndirectedGraphNode* cloneGraph(UndirectedGraphNode* node) { // write your code here if(node == NULL) ...

2018-05-15 17:40:01 177

原创 lintcode176-图中两个点之间的路线

题目描述:对于本题,本能想到深度优先搜索。递归实现, 一直走到当前路线最后一个节点。当递归回到s节点,并且没有找到t节点,才能认为是不存在路线。图中可能有不同的节点指向同一个节点,这样就需要一个数据结构来保存每一个节点的访问情况,只访问没有访问过的节点,这样才不会超时。class Solution {public: /* * @param graph: A list of Di...

2018-05-15 15:49:21 204

原创 lintcode187-加油站

题目描述:解题思路:往上有好多种思路,在这里写上我认为比较好理解的。            如果当前i,gas[i] - cost[i] &lt; 0, 此加油站是不能作为起点的。            如果某一起点start,在遍历到加油站end时,出现汽车油量cur_gas&lt;0,则 start不能作为起点。这种情况下,将start往前走一个,看能不能到达end,这样就可以在本次过程中,用...

2018-05-15 11:05:51 180

原创 lintcode1399-拿硬币

题目描述:本题是只能从最左边或者右边拿k次,可以进行k次遍历,开始k次都从最左边拿,然后是从左边拿k-1个,从右边拿1个......一直到全部K个都是从右边拿,在此过程中,利用一个变量保存最大和的情况。最后退出返回。代码:int takeCoins(vector&lt;int&gt; &amp;list, int k) { // Write your code here if(li...

2018-05-15 10:05:05 501

原创 lintcode1396-集合合并

题目描述:解题思路:构建一个key-value对,key为数组元素,value表示该元素在第几个集合中;                将所有的集合中的元素都拷贝到一个数组中,                根据元素排序,使得相同的元素都在一起,然后更改下标。                循环检测,直到没有可以更改的元素为止。                统计此时元素有几个下标,就是剩下了几个...

2018-05-15 09:03:55 175

空空如也

空空如也

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

TA关注的人

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