如题所示,题目很简单,替换空格,将字符串中的空格替换为%20;
即"we are happy”替换成“we%20are%20happy”;
如果每当我们遇到一个空格就将字符串向后平移两位,这样复杂度就是O(n2)了,这样的方法是不可取的,按照作者的来说,offer已不足拿到了;
而当我们反向从字符串末尾开始遍历,复杂度仅为O(n),当然前提的是该字符串有足够空间,否则替换会失败。
了解到思想之后程序也就比较简单了,发现自己的与作者的写的也比较类似,就此贴上了......
分类:
其他好文 时间:
2014-05-22 12:25:54
阅读次数:
201
素数表在算法中经常会用到,所以掌握一种高效求解素数表的算法是很有必要的。
这里介绍一种算法:筛法。筛法的时间复杂度我不太清楚,但我知道是接近于 O(n) 的,比一般的求解素数的算法效率要高很多,其基本思想如下:
1、要得到 2 — n 之间的所有素数,先记录下 2 — n 之间的所有整数,用集合表示 A = { 2 , 3 , 4 , 5 , 6 …… n }
2、创建一张素数表 P...
分类:
其他好文 时间:
2014-05-22 12:21:52
阅读次数:
201
设计模式这门课程我们之前都学过,但通过这次考试准备发现学习上好多问题,以前理解的很不到位,紧紧是浅显的理解,每种模式都了解些,但每种模式的思想了解的不深刻,设计模式这门课程缺乏整体的把控,以至于模式和模式之间的区别和联系有些模糊,通过这次的复习,对设计模式的概念性的理解又深刻了很多,学习知识需要靠的是反复,知识间不断的联系,以考促学,加油!...
分类:
其他好文 时间:
2014-05-22 11:43:24
阅读次数:
212
关于依赖注入
Dependency Injection( 依赖注入)可以很好的帮助我们分离模块,降低耦合、提高可测试性。(PS:Roboguice 只是一个工具,依赖注入更多的是一种思想)
通常博主开发项目时喜欢以Activity 、Service 等组件作为顶级层入口,辅以各类接口作为业务服务。Activity 主要负责维护界面相关的东西,及提供功能所需要的上下文环境,引入功能实...
分类:
移动开发 时间:
2014-05-22 10:30:30
阅读次数:
535
一、算法思想描述 1、设置一定的步长 2、将整个序列根绝步长分成若干个子序列。对每个子序列执行直接插入排序 3、重复步骤2,直到步长为1(包含1)二、算法分析 希尔排序,也叫缩小增量排序,是插入排序的一种,他对插入排序进行了一定的优化。 时间复杂度:一般认为,在某些序列中可以达到O(n^1.3) 空间复杂度:O(1) ...
分类:
其他好文 时间:
2014-05-22 08:49:36
阅读次数:
213
剑指offer上的第23题,实际上就是考察二叉树的层序遍历,具体思想可以参考这里。
题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行一个整数n(1<=n<=1000, :n代表将要输入的二叉树元素的个数(节点从1开始编号)。接下来一行有n个数字,代表第i个二叉树节点的元素的值。接下来有n行,每行有一个字母Ci。
Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号。
Ci=’l’表示第i个...
分类:
其他好文 时间:
2014-05-22 08:29:03
阅读次数:
306
题目连接:Codeforces 432E Square Tiling
题目大意:给出一个n?m的矩阵,要求对该矩阵进行上色,用大写字母,但是每次上色的区域必须是正方形,不求相邻的上色区域不能有相同的颜色,求字典序最小的方案(字典序比较,从左至右,从上到下)
解题思路:用贪心的思想去构造矩阵,因为字典序的优先级为左至右,以及上到下,所以我们每次对于一个未上色点x,y,考虑最少要放到的长度...
分类:
其他好文 时间:
2014-05-22 07:53:17
阅读次数:
280
一、算法思想描述 归并排序:先递归分解序列,然后在合并有序序列。其过程描述如下:每次输出A、B这两个有序序列中的最小的一个。 二、算法分析 时间复杂度:最差、平均、最好的时间复杂度都是O(nlgn); 空间复杂度:O(n) 稳定性: 稳定三、算法实现 /*
* mergesort.cpp
*
* Created on: 2014年5月18日...
分类:
其他好文 时间:
2014-05-22 07:29:44
阅读次数:
250
一、算法思想描述1)令i = L,j = R,将基准数挖出形成第一个坑(基准数可以选择第一个位置上的数作为基准数,也可以选择其他位置上的数作为基准数)。2)j-- 。从后往前扫,找到第一个比基准数小的数。并将其“挖出”,填到上一个形成的坑中arr[i]3)i++ 。 从前往后扫,找到第一个比基准数大的数。并将其“挖出”,填到上一个形成的坑中arr[j]4)不断地重复2)、3)直到i == j,...
分类:
其他好文 时间:
2014-05-22 06:48:32
阅读次数:
208
与上篇思想一样,或者说是替换数字的另一种版本吧,题目如下:
有两个已经排好的数组A1和A2,A1的末尾有足够的空间来容纳A2,我们将A2数组插入到A1中,继续保持已经排序;
这样看来就和替换空格相似了,如果我们在A1数组从头到尾复制数字,这样导致A1数组后面的数一直不断往后移动,复杂度一样是O(n2),所以,我们来举一反三:...
分类:
其他好文 时间:
2014-05-22 06:14:10
阅读次数:
241