/** * Return an array of arrays of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */ int** permute(int* nums, int numsSize, int* returnSize) { for(int i = 0; i < numsSize; i++) { backtracking(nums, i + 1, numsSize, returnSize); } } void backtracking(int* nums, int start, int numsSize, int* returnSize) { if(start == numsSize) return; else if(start = numsSize -1) { //add all to result } else backtracking(nums, i + 1, numsSize, returnSize); }