例題:
給你乙個鍊錶的頭節點 head,請你編寫**,反覆刪去鍊錶中由 總和 值為 0 的連續節點組成的序列,直到不存在這樣的序列為止。
刪除完畢後,請你返回最終結果鍊錶的頭節點。
資料案例
輸入:head =
[1,2,-3,3,1]
輸出:[3,1]
輸入:head =
[1,2,3,-3,4]
輸出:[1,2,4]
輸入:head =
[1,2,3,-3,-2]
輸出:[1]
之前有做過找最大字首和的問題,感覺這個連續最大為0的鍊錶題也應該類似。但是對於第一次解決鍊錶字首和問題,思路想了很久。
思路:head = [1,2,-3,3,1]
1、對於這組資料來講,我們可以依次得到他的每一位的字首和是[1,3,0,3,4],有了這一步,思路就很清晰了,只要找到一樣的字首和,兩個數之間的數字都是滿足連續和為0的
2、特殊情況的處理:
//字首和的問題
public listnode removezerosumsublists
(listnode head)
else
map.
get(count)
.next = cur.next;
} cur = cur.next;
}return dymmynode.next;
}
後來看了一些大佬的題解,這個題可以完全用指標實現,效率極高
class
solution
q = q.next;
sum += q.val;}if
(sum !=
0) h = h.next;
}return dummyhead.next;
}}
資料結構與演算法1 字首和技巧
基礎型別1 leedcode560 和為k的子陣列 給定乙個整數陣列和乙個整數 k,你需要找到該陣列中和為 k 的連續的子陣列的個數。型別 1 輸入 nums 1,1,1 k 2 輸出 2 1,1 與 1,1 為兩種不同的情況。class solution def subarraysum self,...
資料結構與演算法 約瑟夫問題
問題描述 編號為1 2 n 的小朋友圍成一圈,從編號為k 1 k n 的小朋友開始報數,報到m的小朋友出列,該小朋友的下一位重新開始從0開始報數,數到m的小朋友再次出列,依次類推,直到所有小朋友出列。由此產生乙個出列編號的佇列。package 鍊錶 author lyq on 2019 12 23 ...
資料結構與演算法 約瑟夫問題
已知n個人 以編號1,2,3,n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從k開始報數,數到m的那個人又出列 一詞重複下去。直到圓桌的人全部出列。試用c 程式設計實現 include include include define error 0 type...