leetcode中最長有效的括號(LeetCode-082-刪除排序鍊表中的重複元素)
2023-04-13 20:54:38 1
leetcode中最長有效的括號?題目描述:存在一個按升序排列的鍊表,給你這個鍊表的頭節點 head ,請你刪除鍊表中所有存在數字重複情況的節點,只保留原始鍊表中 沒有重複出現 的數字,今天小編就來說說關於leetcode中最長有效的括號?下面更多詳細答案一起來看看吧!
leetcode中最長有效的括號
刪除排序鍊表中的重複元素 II題目描述:存在一個按升序排列的鍊表,給你這個鍊表的頭節點 head ,請你刪除鍊表中所有存在數字重複情況的節點,只保留原始鍊表中 沒有重複出現 的數字。
返回同樣按升序排列的結果鍊表。
示例說明請見LeetCode官網。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/
著作權歸領扣網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
解法一:鍊表遍歷首先,聲明一個新的鍊表頭結點newHead,last指向新的頭結點newHead,cur指向老的頭結點head,然後遍歷鍊表head,遍歷過程如下:
聲明一個boolean變量isRepeated來標識當前節點是否是重複節點;聲明next為cur的next節點,通過循環過程找到下一個跟cur節點的數字不同的節點,並且判斷當前節點是否是重複的並更新isRepeated;如果isRepeated為true,說明當前節點是重複的,則跳過這個重複節點,然後處理下一個節點;如果isRepeated為false,說明後面的節點沒有和當前節點相同的,將當前節點加入到last的next節點中,然後處理下一個節點。最後返回newHead的next節點即為結果。
public class LeetCode_082 { public static ListNode deleteDuplicates(ListNode head) { if (head == null || head.next == null) { return head; } ListNode newHead = new ListNode(-1); ListNode last = newHead, cur = head; while (cur != null) { // 當前節點是否是重複的標識 boolean isRepeated = false; ListNode next = cur.next; // 找到下一個跟cur節點的數字不同的節點,並且判斷當前節點是否是重複的 while (next != null && next.val == cur.val) { isRepeated = true; next = next.next; } if (isRepeated) { // 如果當前節點是重複的,則跳過這個重複節點 cur = next; } else { // 如果當前節點不是重複的,則作為last的下一個節點 last.next = new ListNode(cur.val); last = last.next; cur = next; } } return newHead.next; } public static void main(String[] args) { ListNode head = new ListNode(1); head.next = new ListNode(2); head.next.next = new ListNode(2); ListNode result = deleteDuplicates(head); while (result != null) { System.out.print(result.val " "); result = result.next; } }}
【每日寄語】 你若等待,清風自來。等待可能是一陣風,等待的有可能是一個機會,等待的有可能是一個人,但你終歸你得等,你不等,那個風是不會來的。
,