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

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; 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值