编程题总结

基础准备

  1. 输入的读取解析和格式输出
  2. 基础类型
  • bit,byte,浮点型,8进制/10进制/16进制,补码

基础数据结构

字符串

  • 标准库
  • 解析
  • 匹配

拼接

"".join(list)

def restoreString(self, s: str, indices: List[int]) -> str:
  res = [''] * len(s)
  for i in range(len(indices)):
    res[indices[i]] = s[i]
    return "".join(res)

线性表

  • 数组
  • 动态数组

队列

leetcode 20

链表

python中链表表示

class ListNode(object):
    def __init__(self, x):
        self.val = x
        self.next = None
    def __repr__(self):
        if self:
            return "{}->{}".format(self.val,self.next)

示例题目

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:

输入: 1->1->2
输出: 1->2
示例 2:

输入: 1->1->2->3->3
输出: 1->2->3

代码

class Solution(object):
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        p = head
        while p != None and p.next != None:
            if p.val == p.next.val:
                p.next = p.next.next
            else:
                p = p.next
        return head
 
if __name__=="__main__":
    l1=ListNode(1)
    l1.next=ListNode(2)
    l1.next.next=ListNode(2)
    l1.next.next.next=ListNode(3)
    print(l1)
    s = Solution()
    s2 = s.deleteDuplicates(l1)
    print(s2)

结果

1->2->2->3->None
1->2->3->None

leetcode 155

class MinStack:
    def __init__(self):
        """
        initialize your data structure here.
        """
        self.s = []
        self.front = None

    def push(self, x: int) -> None:
        if not self.s:
            self.front = x
        self.s.append(x)

    def pop(self) -> None:
        self.s.pop()
        # if self.s:
        #     self.s.remove(self.s[-1])

    def top(self) -> int:
        if not self.s:
            return self.front
        else:
            return self.s[-1]

    def getMin(self) -> int:
        # print(sorted(self.s))
        # print(self.s.sort())
        return sorted(self.s)[0]
main函数测试
if __name__ == '__main__':
    m = MinStack()
    m.push(-2);
    m.push(0);
    m.push(-3);
    print(m.s)
    m.pop()
    print(m.s)
    m.pop()
    print(m.s)
    m.pop()
    print(m.s)
执行结果
[-2, 0, -3]
[-2, 0]
[-2]
[]

哈希表

高级数据结构

常用算法及思想

排序算法

快速排序

冒泡排序

leetcode 1528

    def sorted_2(self, s_list):
        for i in range(len(s_list)):
            for j in range(i, len(s_list)):
                if s_list[i][0] > s_list[j][0]:
                    temp = s_list[j]
                    s_list[j] = s_list[i]
                    s_list[i] = temp
        print(s_list)

插入排序

堆排序

迭代、递归思想

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦