給出乙個區間的集合,請合併所有重疊的區間。
示例 1:
輸入: [[1,3],[2,6],[8,10],[15,18]]
輸出: [[1,6],[8,10],[15,18]]
解釋: 區間 [1,3] 和 [2,6] 重疊, 將它們合併為 [1,6].
示例 2:
輸入: [[1,4],[4,5]]
輸出: [[1,5]]
解釋: 區間 [1,4] 和 [4,5] 可被視為重疊區間。
class solution {
public:
bool iscanmerge(vector&merge1, vector&merge2)
if (merge1.size() != 2 || merge2.size() != 2)
return false;
if (merge1[1] < merge2[0])
return false;
return true;
static bool myfunc(vector&vi, vector&vj)
return vi[0] < vj[0];
vector> merge(vector>& intervals) {
if (intervals.size() <= 1)
return intervals;
std::sort(intervals.begin(), intervals.end(), myfunc);
vector>::iterator itrpre = intervals.begin();
vector>::iterator itrend = intervals.begin();
itrend++;
vector> vect;
vectortemp = *itrpre;
while (itrend != intervals.end())
if (iscanmerge(temp, *itrend))
temp[0] = (temp[0] < (*itrend)[0]) ? temp[0] : (*itrend)[0];
temp[1] = (temp[1] > (*itrend)[1]) ? temp[1] : (*itrend)[1];
itrend++;
else
vect.push_back(temp);
temp.clear();
temp.push_back((*itrend)[0]);
temp.push_back((*itrend)[1]);
itrend++;
if (!temp.empty())
vect.push_back(temp);
return vect;
輸出乙個集合的所有子集
輸出字串的所有子集 如 對 abc 輸出 c b bc a ac ab abc 第一種做法 2 n 遍歷每個字元,每個字元只能取或者不取。取就把該字元加入結果中,遍歷完畢後,輸出結果字串。如下 main.cpp 輸出乙個集合的所有子集 created by zjl on 16 8 10.includ...
列舉乙個集合的所有子集
數字範圍是0 9,即集合元素在10個及以下 ifndef subset h define subset h class subset endif subset h include include subset.h using namespace std int main array1.find su...
輸出乙個集合的所有子集合
面試遇上了這個問題,思量了會,想到用遞迴的方式解決這個問題。回來網上搜尋了下,發現通過二進位制的思想來解決這個問題更容易,下面我把兩種解決方式的思想及原碼分享出來。我們都知道,乙個含n個元素的集合擁有2 n個子集合,並且不難發現,其中每個子集合都是從0到2 n 1 每個數的二進位制格式中0 放棄,1...