美文网首页
编程珠玑 第二章总结

编程珠玑 第二章总结

作者: fertilizer | 来源:发表于2017-07-24 13:45 被阅读0次

第二章主要强调了编程过程前中后,需要捕捉自己的灵感。
具体问题:
仅仅使用十几个字节的额外空间将一个n元向量x在正比于n的时间内向左旋转i个位置。

最容易想到的方法solution1:
solution1:开辟一个大小为i的内存块m,将x的前i个数放入m中,然后将x后n - i个数向左移动i位,再将m中的数填入x的最后i位中。
这样在极端情况下,要开辟n - 1个元素大小的内存块。

比较好的解法,是采用左右手翻转规则。x = ab
a(r)表示a的翻转
ab -> a(r)b(r) -> ba,异常简洁。
代码实现:

#include <iostream>
#include <vector>
using namespace std;

void reserve_v(vector<int> &v, int i, int j) {
    while(i < j) {
        swap(v[i], v[j]);
        i++;
        j--;
    }
}
int main(int argc, char *argv[]) {
    vector<int> v = {0, 13, 4, 5, 6, 2, 3, 0};
    // "i" is the count of elements moved left in circle;
    int i = 3;
    reserve_v(v, 0, i - 1);
    reserve_v(v, i, v.size() - 1);
    reserve_v(v, 0, v.size() - 1);
    for (auto i:v) {
        cout << i << " ";
    }
    cout << endl;
    return 0;
}

如果将abc->cba,如何操作?
cba = (a(r)b(r)c(r))(r),所以可以将a、b、c分别作逆序,然后在整个做逆序。

相关文章

  • 编程珠玑 第二章总结

    第二章主要强调了编程过程前中后,需要捕捉自己的灵感。具体问题:仅仅使用十几个字节的额外空间将一个n元向量x在正比于...

  • 《编程珠玑》第二章

    Problem I: 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(在文...

  • 《编程珠玑》之珠玑

    作者:Jon Bentley 本书的作者通过一个一个实际生活中的例子来给引导我们对编程进行思考,虽然在实际工作中我...

  • 编程珠玑

    ## 编写自己的代码库 应该将自己编写的每一个程序都当作一个日后可以重用的库。 * 编写用例,在实现中将计算过程分...

  • 相关书籍

    《大话数据结构》《剑指Offer》《编程之美》《编程珠玑》

  • 《编程珠玑高清》PDF高清完整版-免费下载

    《编程珠玑高清》PDF高清完整版-免费下载 《编程珠玑高清》PDF高清完整版-免费下载 下载地址:网盘下载 备用地...

  • 编程珠玑 笔记

    第一章 开篇 友好的对话 在别人不会问问题时,引导他去问问题也是一个很大的学问。Jon与一个程序员问的问...

  • 编程珠玑-01

    说来惭愧, 大概半年前买的, 在书柜里躺了半年了, 前几天看了几页, 很认真的那种看, 仅仅看了几页, 觉得还是能...

  • 编程珠玑11.6

    今天读了《编程珠玑》的第三章,可能是这本书写的比较早(30年前)的缘故吧,有很多地方感觉不理解。但是在那个时代作者...

  • 编程珠玑 第十一章总结

    这一章主要讲了quick-sort和其改进的过程。下面主要总结一下改进的动机。 动机1:原始的快速排序算法适合于数...

网友评论

      本文标题:编程珠玑 第二章总结

      本文链接:https://www.haomeiwen.com/subject/mhqbkxtx.html