排除重複和連續元素

2021-10-20 12:30:48 字數 673 閱讀 6857

最近做演算法,有一道演算法題是這樣的

搜尋最長的連續串,比如給定的陣列是 1, 3, 6, 4, 8, 4, 87, 101, 5,那麼返回的結果是 1 3->6 8 87 101。

這道題看似很簡單,其實暗藏玄機。具體思路是:先做排序,然後再遍歷陣列找結果。寫**時要注意很多細節。

public static void main(string args) ;

arrays.sort(arr);

arraylistret = new arraylist();

int start = integer.min_value;

int end = integer.min_value;

for (int i = 0; i < arr.length; i++) else if (start == integer.min_value) else if (arr[i] == arr[i - 1] + 1) else else

start = arr[i];

end = integer.min_value;}}

if (end == integer.min_value) else

for (string str : ret)

// 執行結果: 1 3->6 8 87 101

}

全排列(可排除重複)

首先我們來說一下這個問題的基本演算法,其實很簡單,是乙個典型的遞迴演算法 1.abbc 排序 讓相等的字元連續 2.a bbc 求解以第乙個字元開頭的組合 3.b abc 發現第二個字元b和上一組組合的頭a 不相等,所以調換,並求解一新頭 b 開頭的組合 4.abbc 還原上一次的交換 5.abbc...

重複的元素

乙個陣列長度為n,元素分別為0 到n 1 已經知道存在重複元素 返回重複元素 要求時間o n 空間o 1 public intduplicate int numbers,int length,int duplication for int i 0 i length i else return dup...

std vector刪除重複元素和查詢

原文 需要這樣乙個容器,可以自動地刪除重複元素,並能很方便地進行查詢操作!似乎採用樹型結構儲存的std set是最佳之選,但到後面才發現,存進去容易,取出來麻煩。不得已又回去用std vector,就在網上找了找,vector是如何實現類似set的unique和find的。其實也沒有想象的複雜,也不...