随笔分类 -  Algorithm

摘要:例如:数组0,1,2,3,4,5,6,7,8,9,10,11,12,要交换1,2子串和7,8,9子串的位置,形成0,7,8,9,3,4,5,6,1,2,10,11,12由于不是链表,不能直接断链,相接,数组存在移动的问题,还要判断有没有重叠的问题,总体思路就是:1)将1~9置逆2)将1~3置逆3)将4~7置逆4)将8~9置逆跟之前的数组旋转类似,那个由于是没有间隔的,所以只要置逆3次,这里中间可能有间隔,所以最多要做4次置逆,代码很简单: 1 public static void doAgainst(int[] a, int start, int end) { 2 int... 阅读全文
posted @ 2012-05-11 13:48 vtianyun 阅读(361) 评论(0) 推荐(0)
摘要:昨天面试去了,讲到字符串移动,也就是交换位置,等于是循环移动。。。结果我自己把自己给绕进去了,怎么都动不好,回来总结总结,发现原因了!待移动的数组假设为a,长度为len,需要移动rotate位,编程珠玑上说的:用的时候,务必小心!书中给的是len =12,rotate=3,是整数倍的关系,直接可以循环3次实现移位,但是这是特殊情况,对于任意情况,应该考虑不是整数倍的时候怎么移动,举个例子:数组0~11,一个12个数,这个比较有代表性,可以移动4,5,8次来满足各种情况,1)对于4次,是12的的整数倍,就像书中写的那样,循环4次就可以完成,每次都刚好移完整个串,代码是这样的: 1 ... 阅读全文
posted @ 2012-05-11 13:16 vtianyun 阅读(984) 评论(0) 推荐(1)