[面试算法]减少中间变量的面试题

来源:互联网 发布:高考软件文科 编辑:程序博客网 时间:2024/05/22 06:57

1.利用数据源的特点,例如首位,空位等,暂时当临时变量使用。

2.如果需要中间变量做标志,可以考虑将数据源改变符号等针对数据源特点让数据源暂时做标志。
例如:数据源都是正数,那么取反就是一种标志。

3.利用递归,递归是开辟隐式存储空间。
例如:
unsigned int mystrlen(const char *str)
{
 if (str==NULL) return 0;

 if (*str != 0) 
  return mystrlen(++str) + 1;
 else
  return 0;
}
递归
出递归后+1

4.利用数学公式
例如:自然数求和公式
#1 Sn = n * (n + 1) / 2
#2 Smn=(n+m)(n-m+1)/2

5.异或交换、加减交换

void swap(int &a,int &b)

{

      if(a==b) return; //当传入的a和b是同一个数(&a==&b)时候会有缺陷
      a^=b;
     b^=a;
     a^=b; 

}

原创粉丝点击