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

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

时间:2023-06-08 22:11:40浏览次数:35  
标签:0000 运算 Offer 异或 65 LeetCode 进位

/**
 * 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
 * <p>
 * 示例:
 * 输入: a = 1, b = 1
 * 输出: 2
 * <p>
 * 提示:
 * a, b 均可能是负数或 0
 * 结果不会溢出 32 位整数
 *
 *  0000 0001
 *  0000 0101
 *
 *  进位和   0000 0010
 *  非进位和 0000 0100
 *
 *  观察发现,无进位和 与 异或运算 规律相同,进位 和 与运算 规律相同(并需左移一位)。因此,无进位和 n 与进位 c 的计算公式如下;
 * {
 *  n=a⊕b非进位和:异或运算
 *  c=a&b<<1进位:与运算+左移一位
 * }
 * (和 s )==(非进位和 n )+(进位 c )。即可将 s=a+b 转化为:
 *  s=a+b⇒s=n+c
 * 循环求 n 和 c ,直至进位 c=0 ;此时 s=n,返回 n 即可。
 *
 *
 */
public class Solution11 {
    public int add(int a, int b) {
        // n: 非进位和   c:进位和
        // 循环是让进位和为0
        while(b!=0){
            int c = (a & b) << 1;
            int n = a^b;
            a=n;
            b=c;
        }
        return a;
    }

    public static void main(String[] args) {
        System.out.println(new Solution11().add(9, 9));
    }
}

标签:0000,运算,Offer,异或,65,LeetCode,进位
From: https://www.cnblogs.com/snolin/p/17467822.html

相关文章

  • LeetCode----回溯
    1算法模板for选择in选择列表:#做选择将该选择从选择列表移除路径.add(选择)backtrack(路径,选择列表)#撤销选择路径.remove(选择)将该选择再加入选择列表2代码示例46.全排列classSolution:def__init__(self):se......
  • LeetCode----前缀和
    1算法原理适用场景:利用preSum数组,可以在O(1)的时间内快速求出nums任意区间[i,j]内的所有元素之和sum(i,j)=preSum(j+1)-preSum[i]算法模板classNumArray:def__init__(self,nums:List[int]):N=len(nums)self.preSum=[0]*(N+1)......
  • 聊聊读研究生应该怎么权衡offer的选择(适合选择恐惧症,哈哈)
    关注微信公众号“AI学习经历分享”,回复对应关键词,获取机器学习,深度学习,Python,Java的技术干货!今天突然有时间聊聊这个读研究生offer的选择,一方面是因为当初都答应了一位朋友,但是因为种种原因和因素,鸽了这个约定,并且最近一段时间比较忙,但是我从来没有忘记,答应别人的事情一定要做到。......
  • LeetCode----二维网格DFS
    1算法模板voiddfs(int[][]grid,intr,intc){//判断basecase//如果坐标(r,c)超出了网格范围,直接返回if(!inArea(grid,r,c)){return;}//访问上、下、左、右四个相邻结点dfs(grid,r-1,c);dfs(grid,r+1,c);......
  • 栈&队列:剑指 Offer 09. 用两个栈实现队列
    题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回-1)   classCQueue{LinkedList<Integer>A,B;publicCQu......
  • CodeForces - 658A Bear and Reverse Radewoosh (模拟)水
    TimeLimit: 2000MS MemoryLimit: 262144KB 64bitIOFormat: %I64d&%I64uCodeForces-658ABearandReverseRadewooshSubmit StatusDescriptionLimakandRadewoosharegoingtocompeteagainsteachotherintheupcomingalgorithmiccontest.Theyareequ......
  • CodeForces - 659B Qualifying Contest (模拟)水
    TimeLimit: 1000MS MemoryLimit: 262144KB 64bitIOFormat: %I64d&%I64uCodeForces-659BQualifyingContestSubmit StatusDescriptionVerysoonBerlandwillholdaSchoolTeamProgrammingOlympiad.Fromeachofthe m Berlandregionsateamoftwopeo......
  • 【Leetcode】5-最长回文子串
    1.一般方法:暴力for循环求解,时间复杂度,空间复杂度。2.动态规划:我们发现在匹配过程中有许多重复计算的部分,我们把这些放到一个表里保存起来会减少运算,用空间换时间。时间复杂度,空间复杂度。例如“babab”字符串对应的表为:dp[i][j]为TRUE代表字符串从i到j为回文串。判断i到j是否为回文......
  • [LeetCode] 1351. Count Negative Numbers in a Sorted Matrix
    Givena mxn matrix grid whichissortedinnon-increasingorderbothrow-wiseandcolumn-wise,return thenumberof negative numbersin grid.Example1:Input:grid=[[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]Output:8Explanation:Thereare......
  • 递归-二叉搜索树-leetcode98验证二叉搜索树
    //leetcodesubmitregionbegin(Prohibitmodificationanddeletion)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=......