A+B问题:给出两个整数a和b,求他们的和,但不能使用+等数学运算符.

注意事项:

1、A与B是32位整数

2、可使用位运算符

样例:如果 a=1 并且 b=2,返回3

一、非递归

 public class Solution {
/**
* @param a: An integer
* @param b: An integer
* @return: The sum of a and b
*/
public int aplusb(int a, int b) {
// write your code here
int c = 0,d = 0;
while((a&b) != 0){//a和b之间有进位
c = a^b; //忽略进位相加
d = (a&b)<<1;//应该进位的值
a = c;
b = d;
}
return a|b;//接返回两者|值
}
}

二、递归

 public class Solution {
/**
* @param a: An integer
* @param b: An integer
* @return: The sum of a and b
*/
public int aplusb(int a, int b) {
// write your code here
if((a&b)==0)
return a|b;//接返回两者|值
else
return aplusb(a^b,(a&b)<<1);
}
}

LintCode——A+B问题的更多相关文章

  1. [LintCode]——目录

    Yet Another Source Code for LintCode Current Status : 232AC / 289ALL in Language C++, Up to date (20 ...

  2. (lintcode全部题目解答之)九章算法之算法班题目全解(附容易犯的错误)

    --------------------------------------------------------------- 本文使用方法:所有题目,只需要把标题输入lintcode就能找到.主要是 ...

  3. Lintcode 85. 在二叉查找树中插入节点

    -------------------------------------------- AC代码: /** * Definition of TreeNode: * public class Tree ...

  4. Lintcode 166. 主元素

    ----------------------------------- Moore's voting algorithm算法:从一个集合中找出出现次数半数以上的元素,每次从集合中去掉一对不同的数,当剩 ...

  5. Lintcode 166. 链表倒数第n个节点

    ----------------------------------- 最开始的想法是先计算出链表的长度length,然后再从头走 length-n 步即是需要的位置了. AC代码: /** * De ...

  6. Lintcode 157. 判断字符串是否没有重复字符

    ------------------------ 因为字符究竟是什么样的无法确定(比如编码之类的),恐怕是没办法假设使用多大空间(位.数组)来标记出现次数的,集合应该可以但感觉会严重拖慢速度... 还 ...

  7. Lintcode 175. 翻转二叉树

    -------------------- 递归那么好为什么不用递归啊...我才不会被你骗...(其实是因为用惯了递归啰嗦的循环反倒不会写了...o(╯□╰)o) AC代码: /** * Definit ...

  8. Lintcode 372. O(1)时间复杂度删除链表节点

    ----------------------------------- AC代码: /** * Definition for ListNode. * public class ListNode { * ...

  9. Lintcode 469. 等价二叉树

    ----------------------------------------------- AC代码: /** * Definition of TreeNode: * public class T ...

  10. Lintcode 375.克隆二叉树

    -------------------------- 水题 AC代码: /** * Definition of TreeNode: * public class TreeNode { * public ...

随机推荐

  1. 从html代码里提取字符编码

    #include <iostream>#include "regex"using namespace std;std::string str = R"( &l ...

  2. Java并发编程--2.synchronized

    前言 synchronized关键字是互斥锁,也称为内部锁 每个对象都有自己的monitor(锁标记),它是为了分配给线程,最多一个线程可以拥有对象的锁 使用 synchronized修饰成员方法,锁 ...

  3. 8、Android---探究服务

    8.1.服务是什么 服务(Service)是Android中实现程序后台运行的解决方案 非常适合执行那些不需要和用户交互而且要求长期的任务 服务的运行不依赖于任何用户界面 即使程序被切换到后台 或者用 ...

  4. windows 下搭建git服务器,及问题处理。

    最近要做一个源码管理服务器,权衡了一下还是git最适合,搭建服务器前看了网上一些windows下搭建git服务器的帖子,感觉还比较简单,没有太多需要配置的地方,于是开始动手. 我选择的是 gitfor ...

  5. attr全选第三次失效

    一功能checkbox时隐时现,比如第一次打开有勾选,第n次打开可能就不选了. 经过偶层层抽次剥茧(da da jiang you),终于知道了原因:attr()在二次选中勾选框时,失效. 比如,如下 ...

  6. Python的多线程和多进程

    (1)多线程的产生并不是因为发明了多核CPU甚至现在有多个CPU+多核的硬件,也不是因为多线程CPU运行效率比单线程高.单从CPU的运行效率上考虑,单任务进程及单线程效率是最高的,因为CPU没有任何进 ...

  7. saltstack之sls文件配置

    state模块 state模块会调用它的sls函数处理一个以.sls结尾的配置文件. sls文件是YAML语言来进行描述的 缩进 不要使用`tab`因为tab是四个空格,而YAML是使用两个空格 冒号 ...

  8. Python基本知识3----序列

    前言: 序列:列表/元组/字符串 3种序列的共同点: 都可以通过索引得到每一个元素 默认索引值从0开始(还支持负数) 都可以通过切片的方式得到范围内的元素的集合 有很多共同的操作符(重复操作符.拼接操 ...

  9. 安装vue

    node.js环境(npm包管理器) vue-cli 脚手架构建工具 cnpm npm的淘宝镜像 1) 安装node.js 从node.js官网下载并安装node,安装过程很简单,一直点下一步就ok了 ...

  10. springboot activiti 整合项目框架源码 shiro 安全框架 druid 数据库连接池

     官网:www.fhadmin.org 工作流模块--------------------------------------------------------------------------- ...