摘要:
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。以下算法实现了可以做旋转和右旋转....原理:abcde123456根据要旋转的位数k,把数组分成两子串,例如K=6,进行右旋转,则把字符串分成 abcde 和 123456(K位)划分技巧:右旋转,后面子串位数为K,剩下做为前面子串;若是左旋转,前面子串位数为K,剩下做为后面子串如果上面 abcde123456 进行左旋转 K=6位,则字符串的划分是:abcde1(K位) 阅读全文
摘要:
微博:http://weibo.com/375061590QQ :375061590到两个重要矩阵: 1.d[numVex][numVex] (numVex图的顶点数):最开始该矩阵就是图的邻接矩阵,经过Floyd算法处理开后,d[numVex][numVex]中的d[i][j],表示着从顶点i到j的最短路径的权重。 2.p[numVex][numVex]:p[i][j]表示从i到j的最短路径上 i的后继,例如1到5最短路劲为1-2-4-5 那么p[1][5]==2 ,最开始构建的p矩阵中p[i][j]= j算法核心思想:三圈for循环 1 for (int k = 0; k < ... 阅读全文
摘要:
字符串是编程中应用到最多的一个数据类型,简单实用,但是深入理解它们,会给我们带来更多好处。字符串缓存池:为了节省内存,提高资源的复用,java中引入了字符串缓存池的概念。缓存池中的字符串是不可回收的:在缓存池中的字符串是不会被垃圾回收机制回收的,基本都是常驻内存,所以过多食用String类,可能会出现内存溢出(下面会讲)。怎么样才会存进缓存池:直接量赋值创建对象在Java,基本包装类型String,Long,Float,Boolean.......都可以利用直接量创建对象。String用直接量进行创建对象的时候,会先在缓存池找到字符串相同的对象,然后指向缓存池中该对象,这样就避免了重新为该对象 阅读全文
摘要:
JAVA的垃圾回收机制,让许多程序员觉得内存管理不是很重要,但是内存内存泄露的事情恰恰这样的疏忽而发生,特别是对于Android开发,内存管理更为重要,养成良好的习惯,有利于避免内存的泄漏.对象的几种状态:这里可以把许多对象和引用看成是有向图,顶点可以是对象也可以是引用,引用关系就是有向边。可达状态:对象创建的时候,有引用指向它,这个时候在对象和引用之间建立了引用关系,即由引用发射有向边指向对象,这个对象就是出于可达状态可恢复状态:当引用不指向一个对象的时候,该对象就处于可恢复状态,这时候在系统回收该对象之前,会调用finalize方法进行资源清理,如果调用这个方法后能重新让引用变量去引用他. 阅读全文
摘要:
去面试微信实习,遇到这道算法题,当时被卡住,故今天把它写出来做下知识整理,原题:实现一个栈,满足min() pop() push()方法的时间复杂度都为O(1).( min()返回栈中最小元素) 思路1:用一个变量minItem记录栈中的最小值,在push()中每次加入一个item就跟minItem对比,item更小,只item赋给minItem,然后再min()中直接return minItem; 这种思路没考虑在pop()过程中,对minItem的影响,当栈顶元素是minItem,执行pop()后minItem就不知道指向谁了,因为栈只记录最小值而起,至于最小值之前那些大小关系都没记录.. 阅读全文
摘要:
在面试笔试中会考到这类题目,要求不用加减乘除运算来计算两数和,其实考的就是位运算。 规则1: 如果1010+0101 = 1111在计算上不产生进位, 则1010^0101 =1010+0101 = 1111 上面1010和0101二进制加法计算的特点是没有进位,所以他们的二进制加法和按位异或运算结果才会相同。但是如果如果是二进制加法运算有进位,则明显以上等价关系就不能成立。 思路:如 20(10100)+25(11001) =45二进制加法运算会产生进位,那我们把他转换成a和b两个数 满足a+b = 20+25 = 45且a和b二进制加法不会产生进位,按照规则1有 20+25 ... 阅读全文
摘要:
HttpClient + Jsoup 模拟登陆,解析HTML获取信息最近在做一个校园综合Android客户端,主要是想把学校各类网站信息进行整合,放在一个平台上,供学校学生阅览。思路如下:拿广东工业大学图书馆网站作为一个例子实现目标:用个人账号登陆图书馆并获取到个人借阅情况。登陆地址http://222.200.98.171:81/login.aspx这里会用到Chrome的开发者工具(浏览器按F12可以开启)打开登陆界面的源码,下面是源码中的form标签Html代码<formname="aspnetForm"method="post"action 阅读全文