首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

codility上的练习题 (1)

2013-09-05 
codility上的练习 (1)codility上面添加了教程。目前只有lesson 1,讲复杂度的……里面有几个题, 目前感觉题库

codility上的练习 (1)

codility上面添加了教程。目前只有lesson 1,讲复杂度的……里面有几个题, 目前感觉题库的题简单。

tasks:

Frog-Jmp:

一只青蛙,要从X跳到Y或者大于等于Y的地方,每次跳的距离为D,问至少跳几次。 X,Y,D都是[1..10^9]的整数。

要求时间空间复杂度O(1)。

这个题比较简单,就是做除法嘛,我们不知道X是否已经不小于Y了,我加了个判断,不过也就一句话。

代码:

// you can also use includes, for example:// #include <algorithm>vector<int> temp;int help(vector<int> &A,int from,int to) {int i,j,r,r1,r2,mid;    if (to - from <= 0) {        return 0;    }    mid = (from + to) >> 1;    r1 = help(A, from, mid);    if (r1 > 1000000000) {        return -1;    }    r2 = help(A, mid + 1, to);    if (r2 > 1000000000) {        return -1;    }    if ((r  = r1 + r2) > 1000000000) {        return -1;    }temp.clear();    for (i = from, j = mid + 1; (i <= mid) && (j <= to);) {        if (A[i] <= A[j]) {            temp.push_back(A[i++]);        }        else {            if ((r += mid - i + 1) > 1000000000) {                return -1;            }            temp.push_back(A[j++]);        }    }    for (;i <= mid;++i) {        temp.push_back(A[i]);           }    for (;j <= to; ++j) {        temp.push_back(A[j]);    }    for (i = from; i <= to; ++i) {        A[i] = temp[i - from];    }    return r;}int solution(const vector<int> &A) {    // write your code here...vector<int> a = A;    return help(a, 0, a.size() - 1);}








 

热点排行