Find All Numbers Disappeared in an Array solved with recursion

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;
    }
};
Comments (1)