Skip to content

Commit 2af7be3

Browse files
committed
Fix problem 82 gofmt
1 parent deb2aa1 commit 2af7be3

File tree

2 files changed

+107
-106
lines changed

2 files changed

+107
-106
lines changed

leetcode/0082.Remove-Duplicates-from-Sorted-List-II/82. Remove Duplicates from Sorted List II.go

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -94,63 +94,63 @@ func deleteDuplicates(head *ListNode) *ListNode {
9494

9595
// 双循环简单解法 O(n*m)
9696
func deleteDuplicates3(head *ListNode) *ListNode {
97-
if head == nil {
98-
return head
99-
}
97+
if head == nil {
98+
return head
99+
}
100100

101-
nilNode := &ListNode{Val: 0, Next: head}
102-
head = nilNode
101+
nilNode := &ListNode{Val: 0, Next: head}
102+
head = nilNode
103103

104-
lastVal := 0
105-
for head.Next != nil && head.Next.Next != nil {
106-
if head.Next.Val == head.Next.Next.Val {
107-
lastVal = head.Next.Val
108-
for head.Next != nil && lastVal == head.Next.Val {
109-
head.Next = head.Next.Next
110-
}
111-
} else {
112-
head = head.Next
113-
}
114-
}
115-
return nilNode.Next
104+
lastVal := 0
105+
for head.Next != nil && head.Next.Next != nil {
106+
if head.Next.Val == head.Next.Next.Val {
107+
lastVal = head.Next.Val
108+
for head.Next != nil && lastVal == head.Next.Val {
109+
head.Next = head.Next.Next
110+
}
111+
} else {
112+
head = head.Next
113+
}
114+
}
115+
return nilNode.Next
116116
}
117117

118118
// 双指针+删除标志位,单循环解法 O(n)
119119
func deleteDuplicates4(head *ListNode) *ListNode {
120-
if head == nil || head.Next == nil {
121-
return head
122-
}
120+
if head == nil || head.Next == nil {
121+
return head
122+
}
123123

124-
nilNode := &ListNode{Val: 0, Next: head}
125-
// 上次遍历有删除操作的标志位
126-
lastIsDel := false
127-
// 虚拟空结点
128-
head = nilNode
129-
// 前后指针用于判断
130-
pre, back := head.Next, head.Next.Next
131-
// 每次只删除前面的一个重复的元素,留一个用于下次遍历判重
132-
// pre, back 指针的更新位置和值比较重要和巧妙
133-
for head.Next != nil && head.Next.Next != nil {
134-
if pre.Val != back.Val && lastIsDel {
135-
head.Next = head.Next.Next
136-
pre, back = head.Next, head.Next.Next
137-
lastIsDel = false
138-
continue
139-
}
124+
nilNode := &ListNode{Val: 0, Next: head}
125+
// 上次遍历有删除操作的标志位
126+
lastIsDel := false
127+
// 虚拟空结点
128+
head = nilNode
129+
// 前后指针用于判断
130+
pre, back := head.Next, head.Next.Next
131+
// 每次只删除前面的一个重复的元素,留一个用于下次遍历判重
132+
// pre, back 指针的更新位置和值比较重要和巧妙
133+
for head.Next != nil && head.Next.Next != nil {
134+
if pre.Val != back.Val && lastIsDel {
135+
head.Next = head.Next.Next
136+
pre, back = head.Next, head.Next.Next
137+
lastIsDel = false
138+
continue
139+
}
140140

141-
if pre.Val == back.Val {
142-
head.Next = head.Next.Next
143-
pre, back = head.Next, head.Next.Next
144-
lastIsDel = true
145-
} else {
146-
head = head.Next
147-
pre, back = head.Next, head.Next.Next
148-
lastIsDel = false
149-
}
150-
}
151-
// 处理 [1,1] 这种删除还剩一个的情况
152-
if lastIsDel && head.Next != nil {
153-
head.Next = nil
154-
}
155-
return nilNode.Next
141+
if pre.Val == back.Val {
142+
head.Next = head.Next.Next
143+
pre, back = head.Next, head.Next.Next
144+
lastIsDel = true
145+
} else {
146+
head = head.Next
147+
pre, back = head.Next, head.Next.Next
148+
lastIsDel = false
149+
}
150+
}
151+
// 处理 [1,1] 这种删除还剩一个的情况
152+
if lastIsDel && head.Next != nil {
153+
head.Next = nil
154+
}
155+
return nilNode.Next
156156
}

website/content/ChapterFour/0082.Remove-Duplicates-from-Sorted-List-II.md

Lines changed: 56 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -126,65 +126,66 @@ func deleteDuplicates(head *ListNode) *ListNode {
126126

127127
// 解法三 双循环简单解法 O(n*m)
128128
func deleteDuplicates3(head *ListNode) *ListNode {
129-
if head == nil {
130-
return head
131-
}
132-
133-
nilNode := &ListNode{Val: 0, Next: head}
134-
head = nilNode
135-
136-
lastVal := 0
137-
for head.Next != nil && head.Next.Next != nil {
138-
if head.Next.Val == head.Next.Next.Val {
139-
lastVal = head.Next.Val
140-
for head.Next != nil && lastVal == head.Next.Val {
141-
head.Next = head.Next.Next
142-
}
143-
} else {
144-
head = head.Next
145-
}
146-
}
147-
return nilNode.Next
129+
if head == nil {
130+
return head
131+
}
132+
133+
nilNode := &ListNode{Val: 0, Next: head}
134+
head = nilNode
135+
136+
lastVal := 0
137+
for head.Next != nil && head.Next.Next != nil {
138+
if head.Next.Val == head.Next.Next.Val {
139+
lastVal = head.Next.Val
140+
for head.Next != nil && lastVal == head.Next.Val {
141+
head.Next = head.Next.Next
142+
}
143+
} else {
144+
head = head.Next
145+
}
146+
}
147+
return nilNode.Next
148148
}
149149

150150
// 解法四 双指针+删除标志位,单循环解法 O(n)
151151
func deleteDuplicates4(head *ListNode) *ListNode {
152-
if head == nil || head.Next == nil {
153-
return head
154-
}
155-
156-
nilNode := &ListNode{Val: 0, Next: head}
157-
// 上次遍历有删除操作的标志位
158-
lastIsDel := false
159-
// 虚拟空结点
160-
head = nilNode
161-
// 前后指针用于判断
162-
pre, back := head.Next, head.Next.Next
163-
// 每次只删除前面的一个重复的元素,留一个用于下次遍历判重
164-
// pre, back 指针的更新位置和值比较重要和巧妙
165-
for head.Next != nil && head.Next.Next != nil {
166-
if pre.Val != back.Val && lastIsDel {
167-
head.Next = head.Next.Next
168-
pre, back = head.Next, head.Next.Next
169-
lastIsDel = false
170-
continue
171-
}
172-
173-
if pre.Val == back.Val {
174-
head.Next = head.Next.Next
175-
pre, back = head.Next, head.Next.Next
176-
lastIsDel = true
177-
} else {
178-
head = head.Next
179-
pre, back = head.Next, head.Next.Next
180-
lastIsDel = false
181-
}
182-
}
183-
// 处理 [1,1] 这种删除还剩一个的情况
184-
if lastIsDel && head.Next != nil {
185-
head.Next = nil
186-
}
187-
return nilNode.Next
152+
if head == nil || head.Next == nil {
153+
return head
154+
}
155+
156+
nilNode := &ListNode{Val: 0, Next: head}
157+
// 上次遍历有删除操作的标志位
158+
lastIsDel := false
159+
// 虚拟空结点
160+
head = nilNode
161+
// 前后指针用于判断
162+
pre, back := head.Next, head.Next.Next
163+
// 每次只删除前面的一个重复的元素,留一个用于下次遍历判重
164+
// pre, back 指针的更新位置和值比较重要和巧妙
165+
for head.Next != nil && head.Next.Next != nil {
166+
if pre.Val != back.Val && lastIsDel {
167+
head.Next = head.Next.Next
168+
pre, back = head.Next, head.Next.Next
169+
lastIsDel = false
170+
continue
171+
}
172+
173+
if pre.Val == back.Val {
174+
head.Next = head.Next.Next
175+
pre, back = head.Next, head.Next.Next
176+
lastIsDel = true
177+
} else {
178+
head = head.Next
179+
pre, back = head.Next, head.Next.Next
180+
lastIsDel = false
181+
}
182+
}
183+
// 处理 [1,1] 这种删除还剩一个的情况
184+
if lastIsDel && head.Next != nil {
185+
head.Next = nil
186+
}
187+
return nilNode.Next
188188
}
189189

190+
190191
```

0 commit comments

Comments
 (0)