這幾個leetcode的題目都可以通過遞迴來解決鍊錶問題,彙總記下。反轉乙個單鏈表。
示例:輸入: 1->2->3->4->5->null
輸出: 5->4->3->2->1->null
public listnode reverselist
(listnode head)
// return newhead.next;
}
將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。
示例:輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
public listnode mergetwolists
(listnode l1, listnode l2)
// else
// prev = prev.next;
// }
// prev.next = (l1 == null) ? l2 : l1;
// return prehead.next;
//2.遞迴
if(l1 == null)
return l2;
else
if(l2 == null)
return l1;
else
if(l1.val <= l2.val)
else
}
給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。
示例 1:
輸入: 1->1->2
輸出: 1->2
示例 2:
輸入: 1->1->2->3->3
輸出: 1->2->3
public listnode deleteduplicates
(listnode head)
// else
// cur = cur.next;
// }
// return head;
}
遞迴是很常見的解決鍊錶問題的方法,這幾個題很具有代表性。 LeetCode 打家劫舍
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...
leetcode 打家劫舍
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...
LeetCode 程式設計
給乙個包含 n 個整數的陣列 s,找到和與給定整數 target 最接近的三元組,返回這三個數的和。for example,given array s and target 1.the sum that is closest to the target is 2.1 2 1 2 解答部分 publi...