ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

周报1.2

2022-02-07 14:59:19  阅读:173  来源: 互联网

标签:index head val 1.2 self cur next 周报


题目:

第一天:707. 设计链表

第二天:206. 反转链表

收获,在使用head时,要先将self.head赋值给head,才能对head进行操作,在add和delete之后要改变链表的长度,range()函数是从0开始的

class Node:

    def __init__(self, val):

        self.val = val

        self.next = None

class MyLinkedList:

    def __init__(self):

        self.head = Node(0)

        self.size = 0 

    def get(self, index: int) -> int:

        if index < 0 or index >= self.size:

            return -1

        head = self.head

        #返回的是第i个,range()是从0开始算的

        for i in range(index + 1):

            head = head.next

        return head.val

    def addAtHead(self, val: int) -> None:

        new = Node(val)

        temp = self.head.next

        self.head.next = new

        new.next = temp

        self.size += 1

    def addAtTail(self, val: int) -> None:

        new = Node(val)

        head = self.head

        while head.next != None:

            head = head.next

        head.next = new

        self.size += 1


 

    def addAtIndex(self, index: int, val: int) -> None:

        '''

        if index > self.number: return

        elif index = n: 

            self.number.next = val 

        else:

            self.

        '''

        new = Node(val)

        head = self.head

        if index == 0:

            self.addAtHead(val)

            return

        elif index == self.size:

            self.addAtTail(val)

            return

        elif index < 0 or index > self.size:

            return

        for i in range(index):

            head = head.next

        temp = head.next

        head.next = new

        new.next = temp

        self.size += 1


 

    def deleteAtIndex(self, index: int) -> None:

        '''

        if i == index - 1 and 0 < index < len(self):

            self.next = self.next.next

        elif index < 0:

            self.

        '''

        if index >= self.size:

            return

        elif index < 0:

            index = 0

        head = self.head

        for i in range(index):

            head = head.next

        head.next = head.next.next

        self.size -= 1



 

# Your MyLinkedList object will be instantiated and called as such:

# obj = MyLinkedList()

# param_1 = obj.get(index)

# obj.addAtHead(val)

# obj.addAtTail(val)

# obj.addAtIndex(index,val)

# obj.deleteAtIndex(index)

2.在反转的过程中,首先要用tmp保留整个链表的结构,以便遍历。在循环中让cur.next指向pre,使得cur永远是新添加的结点

class Solution:

    def reverseList(self, head: ListNode) -> ListNode:

        cur = head

        pre = None

        while (cur != None):

            temp = cur.next     #将原本的cur.next先存起来

            cur.next = pre      #反转

            pre = cur           #让把遍历到的cur链表赋给pre,

            cur = temp          #遍历下一个结点

        return pre  

标签:index,head,val,1.2,self,cur,next,周报
来源: https://blog.csdn.net/Allen_Ming/article/details/122766444

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有