it培训机构一般多少钱/东莞seo优化推广
今天开始刷题,这是准备找工作刷的第一题,之前做了几道string的题,并没有觉得很难,有点不熟悉做题的模式,因为,总觉得前后不连贯,自己的思路受到了限制,现在又要重新进行克服,慢慢来熟悉做题的模式。
首先这个问题,what??真的是,,怀疑自己是不是不具有程序猿的思维啊,什么鬼题呀,是这个样子求解的呀。刚开始做题,真的是读不懂题目,但,熟悉习惯就好了·~不急不急哈·~(精分少女的日常,边怀疑自己,边鼓励自己)
解读题目:
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.
Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4 after calling your function.
写出一个单链表删除某个节点的函数,并且给出了那个节点的入口,也就是直接把那个节点所给出。然后要删掉这个节点。
古板的思维套路,从链表的头结点开始呀,然后遍历,遍历到这个节点,然后先这个节点的前驱节点指向该结点的后继结点就可以了,但这个题没有给出链表的头结点,根本不知道怎么下手了,然后就被蒙住了。刚开始是读不懂题,不知道题目想要说什么,读懂了之后,也就是一个替换啊,其实是很方便的,很简单,但几分钟之前的自己真的很萌萌萌哒。
总结:
1,不熟悉这种抽取出一个函数的编程手法,很不习惯,需要多加练习
2,思维灵活性不够,有一点点死板,需要多见一些形式来增加思维的灵活性
3,对于leetcode这类型的题,读题是一个很重要的点,我们需要知道给出的材料到底是什么,需要我们怎么做,然后再从中提炼抽取出自己想要的东西。
比如:这一题,给出的只是node, 那么这个node是做什么的呀,我们需要明确,然后想要删掉这个node,我们应该如何做,抽出问题,然后求解就会比较方便了。
代码:python版本
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = Noneclass Solution(object):def deleteNode(self, node):""":type node: ListNode:rtype: void Do not return anything, modify node in-place instead."""if node.next == None:print "False"Node = ListNode(node.val)Node = node.nextnode.val = Node.valnode.next = Node.next
看了简要的答案之后,发现自己真的有点菜,哈哈,直接替换就行了,为什么还要重新分配一个结点呢?
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = Noneclass Solution(object):def deleteNode(self, node):""":type node: ListNode:rtype: void Do not return anything, modify node in-place instead."""node.val = node.next.valnode.next = node.next.next