使用 list.contains() 方法
兩層迴圈暴力法
使用雜湊表
額外的方法
我們在刷 leetcode 時候經常會遇到陣列去重的問題,當然我這裡說的陣列去重也包括 string 字串去重,因為 string 可以 tochararray 嘛。那我們怎麼做呢?什麼樣的場景需要用何種方式呢?怎麼做才最高效呢?帶著這些疑問,我們來看看下面的 7 種實現方式,以及適用場景和特點介紹吧!
特點:簡單直接,但是去重後無序,既不是輸入的順序,也不是從小到大的排序
因此我們遇到僅僅是去重的場景,可以考慮到使用 hashset 去重的方式了
public
int[
]unique
(int
arr)
return result;
}
你要是寫成下面常規寫法當然也可以,注意這只是寫法不同,形式還是一樣的用 hashset 去重
public
int[
]unique
(int
arr)
int[
] result =
newint
[set.
size()
];iterator it = set.
iterator()
;int i =0;
while
(it.
hasnext()
)return result;
}
特點:簡單直接,去重後的迴圈和輸入的循序不一致,但是可以自動排好序,預設從小到大
因此,當我們遇到去重後需要從小到大排好序,就可以考慮到使用 treeset 去重了
public
int[
]unique
(int
arr)
return result;
}
特點:簡單直接,去重後的循序和輸入的順序一致,但是不是排好序的
因此對於需要保持陣列原有順序不變,就可以考慮到用 linkedhashset 來做了
public
int[
]unique
(int
arr)
return result;
}
特點:很容易理解,去重後和輸入的順序保持一致,是穩定的,但是最後若是輸出陣列,還要多出乙個迴圈
public
int[
]unique
(int
arr)
}int
result =
newint
[list.
size()
];int i =0;
for(
int a : list)
return result;
}
特點:比較麻煩,基本不會去這麼寫
這裡的思路是兩層迴圈遍歷,裡面這層迴圈是遍歷前面和當前有沒有相當,即重複的元素
public
int[
]unique
(int
arr)}if
(j == i)
}int
result =
newint
[list.
size()
];int i =0;
for(
int a : list)
return result;
}
特點:還是比較麻煩,基本不會這麼去用
這裡的思路是兩層迴圈,裡面的這層迴圈遍歷的次數少了,只遍歷去重了的前面的數字
public
int[
]unqiue
(int
arr)}if
(j == list.
size()
)}int[
] result =
newint
[list.
size()
];int i =0;
for(
int a : list)
return result;
}
特點:高效,寫起來可能稍微麻煩些,占用空間較大,輸出與輸入順序一致,且穩定
public
int[
]unique
(int
arr)
}int
result =
newint
[list.
size()
];int i =0;
for(
int a : list)
return result;
}
對於 string 型別資料,我建議轉成 char 來做,這樣要快一些,若直接使用 string 的話也能做,可以考慮 indexof() 方法和 contains() 方法,前者若子串存在返回第乙個的下標,第二個則是返回布林值,二者本質還是裡頭套著 for 迴圈去遍歷元素看找不找的到 git 奇技淫巧
例如 1.0.0 git tag a 1.0.0 m 1.0.0 版本的備註資訊.複製 git push origin tags 複製 例如 1.0.0 git tag d 1.0.0 複製 刪除遠端標籤需要先刪除本地標籤,再執行下面的命令 git push origin refs tags 1.0...
C 之奇技淫巧
typedef struct data 0 pdata 0 typedef struct data 1 pdata 1 結構體data 0與data 1在性質上沒有什麼不同,它們的size是相等的,都是8.但在用法上有很大區別。例 pdata 0 stack0 pdata 0 malloc max ...
c 的奇技淫巧
關於陣列 數論演算法技巧 stl其他 while scanf d d n,m eof 等價於 while scanf d d n,m 2 前者eof為檔案結束符,較保險 後者 後的數字為輸入的變數的個數 不能只寫while scanf d d n,m 這樣無法結束讀入 wwq大佬教的,希望我不要和他...