資料結構與演算法 字首和的問題

2021-10-07 00:18:44 字數 986 閱讀 4561

例題:

給你乙個鍊錶的頭節點 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...