aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sum_two_integers.c22
-rw-r--r--sum_two_integers.py23
2 files changed, 45 insertions, 0 deletions
diff --git a/sum_two_integers.c b/sum_two_integers.c
new file mode 100644
index 0000000..4fee7e9
--- /dev/null
+++ b/sum_two_integers.c
@@ -0,0 +1,22 @@
+// 371. Sum of Two Integers
+#include "leetcode.h"
+
+/*
+ * given two integers 'a' and 'b', return the sum of the two integers without
+ * using the operators '+' and '-'.
+ */
+
+int getSum(int a, int b) {
+ int trigger = a & b, ans = a ^ b;
+ while (trigger) {
+ int carry = (trigger & 0xFFFFFFFF) << 1;
+ trigger = carry & ans;
+ ans ^= carry;
+ }
+ return ans;
+}
+
+int main() {
+ printf("%d\n", getSum(1, 2)); // expect: 3
+ printf("%d\n", getSum(2, 3)); // expect: 5
+}
diff --git a/sum_two_integers.py b/sum_two_integers.py
new file mode 100644
index 0000000..1ed3424
--- /dev/null
+++ b/sum_two_integers.py
@@ -0,0 +1,23 @@
+# 371. Sum of Two Integers
+
+"""
+given two integers 'a' and 'b', return the sum of the two integers without
+using the operators '+' and '-'.
+"""
+
+
+class Solution(object):
+ def getSum(self, a, b):
+ """
+ :type a: int
+ :type b: int
+ :rtype: int
+ """
+ ab = [a, b]
+ return sum(ab)
+
+
+if __name__ == "__main__":
+ obj = Solution()
+ print(obj.getSum(a=1, b=2))
+ print(obj.getSum(a=2, b=3))