• 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左移位是不会溢出的。

  • 相关阅读:
    MATLAB sort函数用法
    时频分析的一段代码注解
    离散时间信号的傅里叶变换
    两正弦加一噪声信号的频谱分析
    模拟信号的重建
    这10个让你笑的合不拢嘴的GitHub项目,居然拿了7万星
    最新大厂技术面试指南,GitHub10000星
    学习Python总是学了新内容又忘了旧的咋办?
    算法推荐,必读的6本经典神书。
    总计超5万星!GitHub上10个超级好玩的项目
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10557041.html
Copyright © 2020-2023  润新知