Go語言LeetCode題解961在長度2N的數(shù)組中找出重復(fù)N次元素
題目描述
961. 在長度 2N 的數(shù)組中找出重復(fù) N 次的元素
給你一個(gè)整數(shù)數(shù)組 nums ,該數(shù)組具有以下屬性:
- nums.length == 2 * n.
- nums 包含 n + 1 個(gè) 不同的 元素
- nums 中恰有一個(gè)元素重復(fù) n 次
找出并返回重復(fù)了 n 次的那個(gè)元素。
示例 1:
輸入:nums = [1,2,3,3] 輸出:3
示例 2:
輸入:nums = [2,1,2,5,3,2] 輸出:2
示例 3:
輸入:nums = [5,1,5,2,5,3,5,4] 輸出:5
提示:
2 <= n <= 5000
nums.length == 2 * n
0 <= nums[i] <= 10^4
nums 由 n + 1 個(gè) 不同的 元素組成,且其中一個(gè)元素恰好重復(fù) n 次
思路分析
先來復(fù)習(xí)一下2n+1:
2n+1個(gè)數(shù)字中,其中有n+1個(gè)數(shù)字是相同的,找出這個(gè)重復(fù)次數(shù)最多的數(shù)字
同歸于盡法,每遍歷一個(gè)元素,檢查手里的元素與之是不是相同 如果相同計(jì)數(shù)+1,不相同計(jì)數(shù)-1, 如果手里沒有元素,也就是當(dāng)計(jì)數(shù)為0的時(shí)候,將當(dāng)前的這個(gè)元素拿到手里
現(xiàn)在來看這個(gè)題目。2n個(gè)元素,要是按照之前那個(gè)同歸于盡的做法來,最后手里不會有元素存在的,都同歸于盡了 那怎么辦呢?
既然沒有2n+1的場景,那我們就盡量制造出這個(gè)情況
比如:[1,2,4,5,3,3,3,3]這個(gè)序列
我們就把第一個(gè)元素1為要剔除的元素 將原來的數(shù)組分成了兩部分,[1,2]和 [4,5,3,3,3,3] 對后一部分的序列用同歸于盡的做法,是不是就得到結(jié)果了?。?/p>
當(dāng)然有人會問,1如果是結(jié)果怎么辦呢,比如這個(gè)序列[1,1,1,1,2,4,5,3] 這樣的情況,只需要在剔除1的時(shí)候,給1計(jì)數(shù)就行了,
最后測量1的個(gè)數(shù)是不是有n個(gè),如果1有n個(gè),那么結(jié)果為1,1小于n,那么結(jié)果就很明顯了。
AC 代碼
class Solution { public: int repeatedNTimes(vector<int>& A) { int assumtp_num = A[0],assumtp_num_Count = 1; int temp_num,Count = 0; for (int i = 1; i < A.size(); ++i) { if(A[i]==assumtp_num) ++assumtp_num_Count; else{ if(A[i]==temp_num) ++Count; else{ if(Count==0){ Count = 1; temp_num = A[i]; } else{ --Count; } } } } //cout<<assumtp_num_Count<<endl; return assumtp_num_Count *2==A.size()?assumtp_num:temp_num; } };
以上就是Go語言LeetCode題解961在長度2N的數(shù)組中找出重復(fù)N次元素的詳細(xì)內(nèi)容,更多關(guān)于Go題解長度2N數(shù)組重復(fù)元素的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
golang類型轉(zhuǎn)換之interface轉(zhuǎn)字符串string簡單示例
在我們使用Golang進(jìn)行開發(fā)過程中,總是繞不開對字符或字符串的處理,這篇文章主要給大家介紹了關(guān)于golang類型轉(zhuǎn)換之interface轉(zhuǎn)字符串string的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01淺談go-restful框架的使用和實(shí)現(xiàn)
這篇文章主要介紹了淺談go-restful框架的使用和實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03關(guān)于go平滑重啟庫overseer實(shí)現(xiàn)原理詳解
這篇文章主要為大家詳細(xì)介紹了關(guān)于go平滑重啟庫overseer實(shí)現(xiàn)原理,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,有需要的小伙伴可以參考下2023-11-11Go語言實(shí)戰(zhàn)之詳細(xì)掌握正則表達(dá)式的應(yīng)用與技巧
正則表達(dá)式是一種從左到右與主題字符串匹配的模式,正則表達(dá)式用于替換字符串中的文本,驗(yàn)證表單,基于模式匹配從字符串中提取子字符串等等,這篇文章主要給大家介紹了關(guān)于Go語言實(shí)戰(zhàn)之詳細(xì)掌握正則表達(dá)式的應(yīng)用與技巧,需要的朋友可以參考下2023-12-12如何判斷Golang接口是否實(shí)現(xiàn)的操作
這篇文章主要介紹了如何判斷Golang接口是否實(shí)現(xiàn)的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12