aboutsummaryrefslogtreecommitdiff
path: root/sum_two_integers.c
diff options
context:
space:
mode:
Diffstat (limited to 'sum_two_integers.c')
-rw-r--r--sum_two_integers.c22
1 files changed, 22 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
+}