目錄陣列
陣列重複元素之類問題的整理
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 ...