- Remove Duplicates from Sorted List
**思路:这是第二次刷到链表题了,对于链表的结点,如果它的next是None,那么next的val属性不存在,这就是我在代码里if那个语句写错的原因。返回头部,即返回了整个链表。
class Solution(object):
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
tmp = head
while tmp:
if tmp.next and tmp.val == tmp.next.val:
tmp.next = tmp.next.next
else:
tmp = tmp.next
return head
- Merge Sorted Array
**思路:不能开启新的空间,就应该从后往前合并,这样nums1才能存这么多东西;用了三个指针。代码注释里写了不用返回任何东西
class Solution(object):
def merge(self, nums1, m, nums2, n):
"""
:type nums1: List[int]
:type m: int
:type nums2: List[int]
:type n: int
:rtype: void Do not return anything, modify nums1 in-place instead.
"""
p , q , k = m-1 , n-1 , m+n-1
while p >= 0 and q >= 0:
if nums1[p] > nums2[q]:
nums1[k] = nums1[p]
p , k = p-1, k-1
else :
nums1[k] = nums2[q]
q , k = q-1 , k-1
nums1[:q+1] = nums2[:q+1]
到现在,虽然做的都是easy题,但是遇到了链表、堆栈、哈希等数据结构。还没遇到过队列。这些知识我在本科的《数据结构与STL》里都学过,但是没有实际运用起来,想当年还是全班最高分,可又有什么用。
网友评论