Untitled
unknown
plain_text
3 years ago
3.1 kB
5
Indexable
class Solution { public: int findComplement(int num) { int not_num = 0; int pos = 0; while (num) { not_num = not_num | ((!(num & 1)) << pos++); num = num >> 1; } return not_num; } }; class Solution { public: bool isPowerOfTwo(int n) { if (n <= 0) return false; while (n > 1) { if ((n&1) != 0) return false; n = n >> 1; } return true; } }; class Solution { public: vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int>> result; vector<int> dummy; // Level 0 result.push_back(dummy); if (nums.size() > 1) { sort(nums.begin(), nums.end()); } // Level 1 map<vector<int>, int> mapping_set; for (int i = 0; i < nums.size(); i++) { vector<int> tmp{nums[i]}; if (mapping_set.find(tmp) == mapping_set.end()) { mapping_set[tmp] = i+1; result.push_back(tmp); } } // Level 2+ int checking_pos = 1; int curr_size = 2; while (curr_size < nums.size()) { while (result[checking_pos].size() == curr_size - 1) { for (int i = mapping_set[result[checking_pos]]; i < nums.size(); i++) { vector<int> tmp = result[checking_pos]; tmp.push_back(nums[i]); if (mapping_set.find(tmp) == mapping_set.end()) { mapping_set[tmp] = i+1; result.push_back(tmp); } } checking_pos++; } curr_size++; } if (nums.size() > 1) result.push_back(nums); return result; } }; class Solution { public: int integerReplacement(int n) { int num_of_steps = 0; while (n != 1) { bool curr_bit = n & 1; if (curr_bit) { if (n == INT_MAX) { n -= 1; } else { if ((n >> 1) & 1) { if (n > 3) n += 1; else n -= 1; } else { if (n > 3) n -= 1; else n += 1; } } } else { n = n >> 1; } std::cout << n << std::endl; if (n +1 != INT_MAX) num_of_steps++; } return num_of_steps; } };
Editor is loading...