title: 演算法小練——a + b 問題
categories:
給出兩個整數 aa 和 bb , 求他們的和。
你不需要從輸入流讀入資料,只需要根據aplusb
的兩個引數a和b,計算他們的和並返回就行。
您在真實的面試中是否遇到過這個題? 是
題目糾錯
a和b都是32位
整數麼?
我可以使用位運算子麼?
樣例 1:
輸入: a = 1, b = 2
輸出: 3
樣例解釋: 返回a+b的結果.
樣例 2:
輸入: a = -1, b = 1
輸出: 0
樣例解釋: 返回a+b的結果.
顯然你可以直接 return a + b,但是你是否可以挑戰一下不這樣做?(不使用++等算數運算子)
public
class
solution
}
這道題目前為止,都很簡單。但是如果你關注到了挑戰的話,就引出思考的問題了。
對於作者這種初次接觸演算法的新手來說,對於不使用算術運算子的思路完全沒有,於是便查詢了下資料,才了解到算術運算子的底層是位運算子,可以用位運算子來替代算數運算子。
那麼就科普下位運算子的知識:
xor
異或 :當 a、b 不等時,為1,反之,為0
and
且:當 aandb 就是 a與b 在位上的相加,需要進製
<<
:進製
eg: 5+6 => 101 +110 => 1011 => 11
那麼把乙個十進位制數先轉化為二進位制數,就發現,非進製部分通過xor來運算,進製部分通過and來運算。因為 0和0得0 0和1為1 符合異或的規則,1和1為10 符合and的規則。
public static int aplusb(int a, int b)
演算法小練 移除元素
title 演算法小練 移除元素 date 2019 11 07 18 53 04 algorithms tags 給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間...
演算法小練 加一
title 演算法小練 加一 date 2019 11 09 19 43 59 categories 給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2...
演算法小練 字首和
混了半學期開始好好補題 好好做人ing 題目來自洛谷,題解聽從裡面大佬的指點,所以 慢慢爬吧。a.地毯 乙個簡單的字首和 由於資料比較小可以直接暴力過,但是資料大的話怎麼辦呢 直接tle?include using namespace std int ar 1 2000 2000 intmain f...