검지 offer--체인 테이블에서 중복된 결점 삭제--귀속 버전과 비귀속 버전
7791 단어 leetcode
체인 테이블에서 반복된 결점 삭제
정렬된 체인 테이블에 중복된 결점이 있습니다. 이 체인 테이블에서 중복된 결점을 삭제하십시오. 중복된 결점은 보존되지 않고 체인 헤더 바늘로 돌아갑니다.예를 들어 체인 테이블 1->2->3->3->4->4->5 처리 후 1->2->5
1: 비귀속 버전 class Solution:
def deleteDuplication(self, pHead):
if not pHead or not pHead.next: return pHead
newHead = ListNode(-1) #
newHead.next = pHead
p = pHead #
pre = newHead #
while p and p.next:
if p.val == p.next.val:
start = p # ,
p = p.next
while p and p.next and p.val == p.next.val:
p = p.next
end = p #
p = p.next
if start == pHead and end.next is None: # ,
return None
elif end.next is None: #
pre.next = None
else:
pre.next = end.next # start -> end
else:
p = p.next
pre = pre.next
return newHead.next
2: 반복 버전
다 쓴 후에 순환해서 하는 것이 매우 번거롭다는 것을 발견하고, 귀속 작법이 더욱 간결하다는 것을 발견하여 다시 썼다class Solution:
def deleteDuplication(self, pHead):
if not pHead or not pHead.next: #
return pHead
nextp = pHead.next
if nextp.val != pHead.val: # ,
pHead.next = self.deleteDuplication(pHead.next)
else:
# pHead
while nextp and nextp.next and pHead.val == nextp.val:
nextp = nextp.next
if nextp.val == pHead.val: # ,
return None
else:
pHead = self.deleteDuplication(nextp)
return pHead
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
0부터 시작하는 LeetCode Day8 「1302. Deepest Leaves Sum」
해외에서는 엔지니어의 면접에 있어서 코딩 테스트라고 하는 것이 행해지는 것 같고, 많은 경우, 특정의 함수나 클래스를 주제에 따라 실장한다고 하는 것이 메인이다.
빠른 이야기가 본고장에서도 행해지고 있는 것 같은 코...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
class Solution:
def deleteDuplication(self, pHead):
if not pHead or not pHead.next: return pHead
newHead = ListNode(-1) #
newHead.next = pHead
p = pHead #
pre = newHead #
while p and p.next:
if p.val == p.next.val:
start = p # ,
p = p.next
while p and p.next and p.val == p.next.val:
p = p.next
end = p #
p = p.next
if start == pHead and end.next is None: # ,
return None
elif end.next is None: #
pre.next = None
else:
pre.next = end.next # start -> end
else:
p = p.next
pre = pre.next
return newHead.next
2: 반복 버전
다 쓴 후에 순환해서 하는 것이 매우 번거롭다는 것을 발견하고, 귀속 작법이 더욱 간결하다는 것을 발견하여 다시 썼다class Solution:
def deleteDuplication(self, pHead):
if not pHead or not pHead.next: #
return pHead
nextp = pHead.next
if nextp.val != pHead.val: # ,
pHead.next = self.deleteDuplication(pHead.next)
else:
# pHead
while nextp and nextp.next and pHead.val == nextp.val:
nextp = nextp.next
if nextp.val == pHead.val: # ,
return None
else:
pHead = self.deleteDuplication(nextp)
return pHead
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
0부터 시작하는 LeetCode Day8 「1302. Deepest Leaves Sum」
해외에서는 엔지니어의 면접에 있어서 코딩 테스트라고 하는 것이 행해지는 것 같고, 많은 경우, 특정의 함수나 클래스를 주제에 따라 실장한다고 하는 것이 메인이다.
빠른 이야기가 본고장에서도 행해지고 있는 것 같은 코...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
class Solution:
def deleteDuplication(self, pHead):
if not pHead or not pHead.next: #
return pHead
nextp = pHead.next
if nextp.val != pHead.val: # ,
pHead.next = self.deleteDuplication(pHead.next)
else:
# pHead
while nextp and nextp.next and pHead.val == nextp.val:
nextp = nextp.next
if nextp.val == pHead.val: # ,
return None
else:
pHead = self.deleteDuplication(nextp)
return pHead
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
0부터 시작하는 LeetCode Day8 「1302. Deepest Leaves Sum」해외에서는 엔지니어의 면접에 있어서 코딩 테스트라고 하는 것이 행해지는 것 같고, 많은 경우, 특정의 함수나 클래스를 주제에 따라 실장한다고 하는 것이 메인이다. 빠른 이야기가 본고장에서도 행해지고 있는 것 같은 코...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.