zoukankan      html  css  js  c++  java
  • Leecode刷题之旅-C语言/python-349两整数之和

    /*
     * @lc app=leetcode.cn id=371 lang=c
     *
     * [371] 两整数之和
     *
     * https://leetcode-cn.com/problems/sum-of-two-integers/description/
     *
     * algorithms
     * Easy (55.04%)
     * Total Accepted:    8.1K
     * Total Submissions: 14.8K
     * Testcase Example:  '1
    2'
     *
     * 不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a 、b ​​​​​​​之和。
     * 
     * 示例 1:
     * 
     * 输入: a = 1, b = 2
     * 输出: 3
     * 
     * 
     * 示例 2:
     * 
     * 输入: a = -2, b = 3
     * 输出: 1
     * 
     */
    int getSum(int a, int b) {
        if(a && b) return getSum(a^b, (a&b) << 1); 
        else return a|b; 
    }

    这里对a和b进行二进制上的相加,然后递归中处理进位。

    (不过这里一直会溢出。。。。。。尴尬)

    -------------------------------------------------------------------------

    python:

    #
    # @lc app=leetcode.cn id=371 lang=python3
    #
    # [371] 两整数之和
    #
    # https://leetcode-cn.com/problems/sum-of-two-integers/description/
    #
    # algorithms
    # Easy (55.04%)
    # Total Accepted:    8.1K
    # Total Submissions: 14.8K
    # Testcase Example:  '1
    2'
    #
    # 不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a 、b ​​​​​​​之和。
    # 
    # 示例 1:
    # 
    # 输入: a = 1, b = 2
    # 输出: 3
    # 
    # 
    # 示例 2:
    # 
    # 输入: a = -2, b = 3
    # 输出: 1
    # 
    #
    class Solution:
        def getSum(self, a: int, b: int) -> int:
            while b != 0:
                carry = a & b
                a = (a ^ b) % 0x100000000
                b = (carry << 1) % 0x100000000
            return a if a <= 0x7FFFFFFF else a | (~0x100000000+1)

    这里模拟32位的int 左移位,python左移位是不会溢出的。

  • 相关阅读:
    cento7快速修改主机名和修改root密码
    [goolegke]nginxingress建立测试
    filebeat安装读取nginx json日志
    MySQL索引背后的数据结构及算法原理
    Lua脚本在redis分布式锁场景的运用
    Sentinel实现限流
    java架构技术流程图
    mybatis数据加解密处理方案
    vue 自定义代码片段
    node项目vue 自动化部署之pm2
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10557041.html
Copyright © 2011-2022 走看看