#include <iostream>
#include <climits>
using namespace std;
/*
Given an integer, add its binary number by 1 without using '+'.
*/
int addOne(int number) {
long long int a = number;
if(a >= INT_MAX) return -1; // may need to talk to interviewer.
int sum = number ^ 1;
int carry = (number & 1) << 1;
while(carry != 0) {
int tmp = sum;
sum = sum ^ carry;
carry = (sum & 1) << 1;
}
return sum;
}
int main(void) {
cout << addOne(INT_MAX) << endl;
}
#include <iostream>
#include <vector>
using namespace std;
/*
Moving non-zero elements, order doesn't matter.
*/
void moveNonzero(vector<int>& nums) {
if(nums.size() == 0) return;
int i = 0;
int j = nums.size() - 1;
while(i < j) {
if(nums[i] == 0) {
swap(nums[i], nums[j]);
j--;
} else i++;
}
return;
}
int main(void) {
vector<int> nums{0, 1, 0, 2};
moveNonzero(nums);
for(int i = 0; i < nums.size(); ++i) {
cout << nums[i] << " ";
}
cout << endl;
}