首页 > 其他分享 >剑指 Offer 65. 不用加减乘除做加法

剑指 Offer 65. 不用加减乘除做加法

时间:2023-09-11 20:11:48浏览次数:45  
标签:Offer int 不用 65 加法 加减乘除

题目链接: 剑指 Offer 65. 不用加减乘除做加法

题目描述:

写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。

解法思路:

不用加减乘除,那么可以用位运算代替: 可以用 a^b 运算表示无进位的加法 可以用 (a&b)<<1 表示进位

因此 a+b=a^b + ((a&b)<<1) 此时再把 a^b 看做 a,把 (a&b)<<1 看做 b,递归调用即可。

代码:

func add(a int, b int) int {
	if b == 0 {
		return a
	}
	return add(a^b, (a&b)<<1)
}

标签:Offer,int,不用,65,加法,加减乘除
From: https://www.cnblogs.com/lxing-go/p/17694384.html

相关文章

  • 剑指 Offer 63. 股票的最大利润
    题目链接:剑指Offer63.股票的最大利润题目描述:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?解法思路:使用minv记录前i天的最低价格,第i天卖出的利润就是prices[i]-minv,遍历一遍数组,不断更新最大利润代码:funcmaxP......
  • 剑指 Offer 60. n个骰子的点数
    题目链接:剑指Offer60.n个骰子的点数题目描述:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。解法思路:还未理解代码://通常做法是声明一个二维数组dp,dp[i][j]代表前i个骰子的点数和j的概率,//并执行状态转移。而由于......
  • 剑指 Offer 61. 扑克牌中的顺子
    题目链接:剑指Offer61.扑克牌中的顺子题目描述:从若干副扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为0,可以看成任意数字。A不能视为14。解法思路:代码://1.将所有的0删掉,看剩下的数//2.看有没有......
  • Android程序员掌握这些面试技巧,offer拿到手软
    前言面试的顺利与否,直接决定了你是否能获得心仪的offer以及是否能拿到满意的薪资。如果说,简历是获得面试的通行证的话,那面试无疑是决定你是否能获得这份工作的重中之重。因此为自己的面试认真做个准备还是性价比很高的一件事情。面试前准备的四要素,简历、面经、知己知彼,录音设备。......
  • 剑指 Offer 59 - I. 滑动窗口的最大值
    题目链接:剑指Offer59-I.滑动窗口的最大值题目描述:给定一个数组nums和滑动窗口的大小k,请找出所有滑动窗口里的最大值。解法思路:单调队列:维护一个单调的队列,队列中保存的是对应数字的数组下标每新加进来一个元素,首先删除队头(超出滑动窗口的范围的值)然后比较当前元......
  • decimal.js加减乘除运算 速记
      consta=9.99;constb=8.03;//加法letc=newDecimal(a).add(newDecimal(b))//减法letd=newDecimal(a).sub(newDecimal(b))//乘法lete=newDecimal(a).mul(newDecimal(b))//除法letf=newDecimal(a).div(newDecimal(b)) 转载:https......
  • 剑指 Offer 56 - II. 数组中数字出现的次数 II
    题目链接:剑指Offer56-II.数组中数字出现的次数II题目描述:在一个数组nums中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。解法思路:代码:......
  • 剑指 Offer 57 - II. 和为s的连续正数序列
    题目链接:剑指Offer57-II.和为s的连续正数序列题目描述:输入一个正整数target,输出所有和为target的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。解法思路:双指针:当总和小于target时,j指针向后移动,直到大于或等于停......
  • 代码随想录:● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98
     654.最大二叉树 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个......
  • Java版剑指offer:平衡二叉树
    Java版剑指offer:平衡二叉树描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(BalancedBinaryTree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉......