學渣帶你刷Leetcode0090子集 II

2021-10-05 05:23:47 字數 1211 閱讀 5773

給定乙個可能包含重複元素的整數陣列 nums,返回該陣列所有可能的子集(冪集)。

說明:解集不能包含重複的子集。

示例:輸入: [1,2,2]

輸出:[

[2],

[1],

[1,2,2],

[2,2],

[1,2],

]詳細解釋關注 b站  【c語言全**】學渣帶你刷leetcode 不走丟 

/**

* return an array of arrays of size *returnsize.

* the sizes of the arrays are returned as *returncolumnsizes array.

* note: both returned array and *columnsizes array must be malloced, assume caller calls free().

*///方法一:遞迴法

//函式一:快排比較函式

int compare(const void* a, const void* b)

//函式二:遞迴法求子集

//1,結束條件 numssize==0 為

//2,遞迴邏輯 if(nums[n]!=nums[n-1]) f(n)=f(n-1) + (f(n-1)每個元素增加n)

//3,if(nums[n]==nums[n-1]) f(n)=f(n-1)+(f(n-1)所新增元素再增加n)

int recusivesubset(int* nums, int** pret, int* pcolsize, int*pretsize, int numssize)

//2,遞迴呼叫

itmpnum = recusivesubset(nums, pret, pcolsize, pretsize, numssize - 1);

//3,在 f(n-1) 的基礎上得到 f(n)

if((numssize > 1) && (nums[numssize - 1] == nums[numssize - 2]))

}else

itmpnum = itmpsize;

}return itmpnum;

}int** subsetswithdup(int* nums, int numssize, int* returnsize, int** returncolumnsizes)

學渣帶你刷Leetcode0035搜尋插入位置

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 2 輸出 1 示例 3 輸入 1,3,5,6 7 輸出 4 示例 4 輸入...

學渣帶你刷Leetcode0063不同路徑 II

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m...

學渣帶你刷Leetcode0066加一

給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2,1 輸出 4,3,...