自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 【问题解决】删除链表结点,要求时间复杂度为O(1)

将结点j的下一个结点完全复制给j j->next = j->next->next; j->data = j->next->data;特殊情况为: 当j为尾结点时,需要从头遍历 当链表中只有一个结点时,需将头节点置NULL, 平均时间复杂度为((n-1)*O(1) + O(n) )/n = O(1);

2017-04-22 15:42:51 625

原创 【问题解决】优化一个double数的exponent次方

double Pow(double base,int exponent);优化之前的次方算法是将i从1遍历到exponent,ret *=ret; 代码如下double PowerWithUnsigne(double base, unsigned int exponent){ double ret = 1.0; for (unsigned int i = 1; i <= exp

2017-04-22 11:23:10 611

原创 【问题解决】二进制中1的个数

例:n = 1110 1101; n-1 = 1110 1100 n&n-1 = 1110 1100 可以发现,当n&n-1的时候,得出来的数将n的最右边一位1消除了,如此重复,有几个一变循环几次,直到n = 0 int countof1(int n) { int count = 0; while(n) {

2017-04-21 10:29:48 375

原创 【问题解决】线程池的使用和实现

线程池:一般线程是系统在接到任务的时候创建,在任务结束的时候被销毁。如果有很多短小大量的任务,那么一条条创建和销毁线程就显得非常浪费资源。根据这种需求,如果将定量的线程创建好后等待任务,任务来之后线程被唤醒,执行完之后又沉睡,那么就只会消耗少量的系统资源。任务节点: //在threadpool.h中typedef struct task{ void *(*run)(void *

2017-04-16 23:38:04 540

原创 【问题解决】斐波那契数列

f(n) = 0 , n = 0; = 1 , n = 1; = f(n-1)+f(n-2), n >=2;如果使用递归,代码比较简单,但是递归深度太大,容易造成线程栈溢出以及重复计算太多,效率极低循环代码如下:#include<iostream>using namespace std;/* 斐波那契数列 可以用递

2017-04-07 17:39:19 449

原创 【练习】旋转数组

题目描述:旋转数组是将排好序的数组前半部分旋转至后半部分,例如{3,4,5,1,2}是{1,2,3,4,5}的旋转数组,找出其中最小值。算法描述:数组data,利用start和end找出其中间值index,通过data[index]和data[start],data[end]的比较,选择将index赋值给start或者end,递归。代码如下:#include<iostream>using n

2017-04-06 18:32:32 285

原创 【问题解决】模板的声明和实现分别放置

在学习《剑指offer》一书的过程中,碰到一个问题,即用两个栈实现队列的输入输出,问题相对简单,但是使用了模 板。我对模板有了解,但是没有尝试自己写一个模板。所以在敲完之后碰到这么一个问题。使用模板类型的函数在被main调用的过程当中没有找到定义。如图:在寻找资料之后发现,模板的声明和实现不能分别放在.h和.cpp文件里,有两种解决方法。第一种叫包含法,是将声明和实现同时放到类里,或者将实现所在的

2017-04-02 14:01:04 462

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除