Checkout this solution for Find All Numbers Disappeared in an Array solved with recursion. It clearly not best (runtime beats 62% of submissions, memory usage beats 42% of submissions). But for me this solution is funny and one I'm proud of.
class Solution {
public:
vector<int> findDisappearedNumbers(vector<int>& nums) {
std::function<void(int)> go_in = [&nums, &go_in](int i) {
int val = nums[i];
if (val == 0)
return;
nums[i] = 0;
go_in(val - 1);
};
for (int i = 0; i < nums.size(); i++)
if (nums[i] != 0)
go_in(nums[i] - 1);
std::vector<int> result;
for (int i = 0; i < nums.size(); i++)
{
if (nums[i] != 0)
result.push_back(i + 1);
}
return result;
}
};