1. 程式人生 > >不用四則運算計算兩數之和

不用四則運算計算兩數之和

這道題中可以使用按位異或,因為按位異或就是不進位加法,

進位我們可以使用兩個數按位與,可以得出應該進位的數,使用 << 左移符號來進位

遞迴呼叫,知道 a 為零時返回 b ,b 為零時返回 a 

舉例:8 + 8 =

1000 + 1000 =

a 等於按位異或後為 0  b等於按位與之後為 1000,使用左移符號為 10000

此時 a 為 0 ,返回 b ,也就是 10000(16)

程式碼:

function sum(a, b) {
    if (a === 0) {
        return b;
    }
    if (b === 0) {
        return a;
    }
    let newa = a ^ b; //異或
    let newb = (a & b) << 1; //進位
    return sum(newa, newb);
}
console.log(sum(1, 4));

相關推薦

不用四則運算計算之和

這道題中可以使用按位異或,因為按位異或就是不進位加法, 進位我們可以使用兩個數按位與,可以得出應該進位的數,使用 << 左移符號來進位 遞迴呼叫,知道 a 為零時返回 b ,b 為零時返回 a  舉例:8 + 8 = 1000 + 1000 = a 等於

不用加法求之和

1大家好,我叫阿美是一名帝都女演算法工程師2大家好,我叫阿毛是一名混日子的帝都男後端3阿毛,咱倆

通過leetcode中的之和耗時最少的程式來理解查詢其實可以不用先賦值

昨天剛刷了個leetcode簡單演算法兩數之和,結果發現自己第一遍耗時188ms(純屬暴力破解),如下為我的程式碼:class Solution { public: vector<int> twoSum(vector<int>& num

算法:JavaScript之和

number 遍歷 sam arr use hat *** 和數 find 題目 Given an array of integers, return indices of the two numbers such that they add up to a specifi

LeetCode 1. Two Sum (之和

ret desc rip twosum 關鍵點 earch pub ++ num Given an array of integers, return indices of the two numbers such that they add up to a specif

[Leetcode] two sum 之和

cnblogs specific 等於 numbers 順序 思路 one bre end Given an array of integers, find two numbers such that they add up to a specific target num

計蒜客--之和

lin mod sizeof ons tom owb res fin iomanip 給定一個數組 number_inumber?i??,找到兩個數,使得他們的和為一個給定的數值 targettarget。 其中:number[index_1] + number[in

LeetCode 167. Two Sum II - Input array is sorted (之和之二 - 輸入的是有序數組)

point find leetcode algorithm 個數 tar div solution runtime Given an array of integers that is already sorted in ascending order, find two

[LeetCode] Two Sum IV - Input is a BST 之和之四 - 輸入是二叉搜索樹

count imp itl .com 否則 href 當前 recursive 兩數之和 Given a Binary Search Tree and a target number, return true if there exist two elements i

之和(簡單)

返回 個數 urn highlight twosum 整數 nbsp targe class 給一個整數數組,找到兩個數使得他們的和等於一個給定的數 target。 你需要實現的函數twoSum需要返回這兩個數的下標, 並且第一個下標小於第二個下標。註意這裏下標的範圍是 0

LintCode 56. 之和

com index 找到 owin zh-cn n) sum www. 範圍 題目: 給一個整數數組,找到兩個數使得他們的和等於一個給定的數 target。 你需要實現的函數twoSum需要返回這兩個數的下標, 並且第一個下標小於第二個下標。註意這裏下標的範圍是 0 到 n

56 之和

暴力 運行 個數 sof fin 根據 html AC text 原題網址: http://www.lintcode.com/zh-cn/problem/two-sum/# 給一個整數數組,找到兩個數使得他們的和等於一個給定的數 target。 你需要實現的函數twoS

167 Two Sum II - Input array is sorted 之和 II - 輸入有序數組

數組 != 解決 升序 desc 一個 輸入 pub cpp 給定一個已按照升序排列 的有序數組,找到兩個數使得它們相加之和等於目標數。函數應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。請註意,返回的下標值(index1

ACM之之和問題

ACM 兩數之和 Java 題目如下:大概的意思是:給我們一個Int型的數組和一個目標值,找出數組中兩個值之和為目標值的元素位置;要求是每個輸入對應一個答案(即找到符合條件的元素直接返回結果就行,不用繼續往後找,難度降低)並且相同的元素值不能用兩次。1.剛開始的思路: 偉大而又萬能的蠻

[leetcode]之和

描述 () 另一個 -s nbsp get list 示例 class 題目描述: 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。 示例: 給定 nums = [2, 7, 11, 15], ta

之和

map() targe port twosum next pri 們的 rgs 一個數 問題描述 給定一個數組 number\(_i\),找到兩個數,使得他們的和為一個給定的數值 target。 其中: number[index\(_1\)]+number[index\(_

LeetCode刷題-001之和

不能 OS malloc turn get ++ return 個數 答案 給定一個整數數列,找出其中和為特定值的那兩個數。你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。示例:給定 nums = [2, 7, 11, 15], target = 9因為 nums

1. 之和

num 元素 lock 不能 輸入 fun 兩數之和 var 重復利用 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。示例:給定 nums = [2, 7, 11, 15], target = 9

Leetcode 1.之和

get 假設 運行 個數 不能 bsp 代碼 運行時間 結果   給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。   你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。   示例: 給定 nums = [2, 7, 11, 15], target

1. 之和【Leetcode中國,by java】

OS 空間 不知道 argument 轉移 for 一個 cep target 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。 示例: 給定 nums = [2, 7, 11, 15], tar