leetcode 關於重複問題和陣列問題

2022-04-15 08:11:11 字數 1881 閱讀 7930

目錄陣列

陣列重複元素之類問題的整理

lt26 刪除排序陣列重複項

主要是原地刪除,o(1) 空間,很是巧妙

func removeduplicates(nums int) int 

tmp:=0

//不同,tmp+1,放在相應位置

for i:=1;ilt80 刪除排序陣列ii

最多重複兩次,空間o(1)

pos是已經放置的位置,放之前和2位前比較,確認不重複

func removeduplicates(nums int) int

pos:=2

//從2開始,

for i:=2;ilt83 刪除排序鍊錶重複元素i

和排序陣列類似,重複數字只保留乙個

func deleteduplicates(head *listnode) *listnode

cur:=head

next:=head.next

for next!=nil

next = next.next

} cur.next = nil

return head

}

lt82 刪除鍊錶重複元素ii

刪除所有的重複元素

func deleteduplicates(head *listnode) *listnode 

//重複元素放置map中

hash:=make(map[int]int)

count:=0

pre:=head

cur:=head.next

for cur!=nilelse

if count==1

pre = cur

cur = cur.next

} //找到對應的數刪除

dummy:=new(listnode)

dummy.next = head

pre = dummy

cur = pre.next

for cur!=nil

pre = cur

cur = cur.next

} return dummy.next

}

func deleteduplicates(head *listnode) *listnode 

dummy:=new(listnode)

dummy.next = head

pre:=dummy

cur:=head

//一次性跳過所有重複元素

for cur!=nil

if flagelse

cur = cur.next

} return dummy.next

}

lt217 存在重複元素i

判斷是否存在重複元素

map一邊判斷一邊加

func containsduplicate(nums int) bool else

}func getk(nums1 int,nums2 int,k int)int

if len(nums2)==index2

if k==1

half:=k/2

newindex1:=min(index1+half,len(nums1))-1 //找中點左邊位置乙個數

newindex2:=min(index2+half,len(nums2))-1

if nums1[newindex1]<=nums2[newindex2]else

}return 0

}func min(x,y int)intelse

}

陣列中連續和為最大

陣列所有組合和為n

陣列連續陣列乘積最大

關於去重複問題

person1 id 1,name test1 person2 id 1,name test1 person3 id 2,name test2 以上list如果直接使用distinct方法進行過濾,仍然返回3條資料,而需要的結果是2條資料。下面給出解這個問題的方法 方法1 distinct 方法中使...

關於TCP重傳 亂序和重複的問題

tcp是一種巨複雜的協議,本篇文章旨在簡單說明一些資料傳輸過程中常見的問題,對於涉及的演算法目前並不會詳細闡述 主要是個人能力原因 tcp提供兩種重傳的機制,一種是基於時間的超時重傳,一種是基於接收端反饋訊息的快速重傳。相比之下前者占用更少的網路頻寬,但是效率很低。而後者則相反。下面我們來具體看一下...

關於Volley重複請求的問題

最近在專案中用volley的時候發現乙個請求的問題 當網路不好的時候請求介面有時候會發出去多次請求,而且是不停的一直請求不會停下來,抓請求後發現請求週期就是設定的超時時間,如圖 查詢資料並檢視原始碼後解決問題,原始碼的defaultretrypolicy類中有乙個建構函式 constructs a ...