设计类-题目总结

设计数据结构类的题目,需要从要实现的方法入手,看为了达到这个方法的效果,我们应该需要哪些基础的数据结构作为这个复杂数据结构的属性。同时注意在初始化的时候要给这些属性赋初始值。
例题:LeetCode173. 二叉搜索树迭代器

题目类型总结

  • 155. 最小栈

  • *284. 顶端迭代器
    借助一个变量cur来实现迭代器以前没有的peek功能。

  • **211. 添加与搜索单词 - 数据结构设计

  • **380. O(1) 时间插入、删除和获取随机元素
    可以把设计的对象提到方法给他赋值就是全局变量,实现全局各方法操作的是同一个对象的效果。
    哈希不能实现随机访问,借助list实现此功能。
    难在实现删除O(1), 哈希的值是数值的下标,键是数值。为了实现O(1)删除,将待删除元素与最后一个元素交换,每次都只删最后一个,这样动态数组就不用移动其他元素了。

  • **355. 设计推特
    使用全局变量表示twitter的时间先后
    使用大顶堆合并多个twitter消息链表
    用map集合映射用户与关注的用户
    用map集合映射用户与用户发送的twitter
    注意很多细节,比如在新加twitter或新关注用户要判空,取消关注也要判集合是否为空

  • AAA6093. 设计一个文本编辑器
    用两个栈存储竖线左右两边的字符,删除增加字符都是对左边的栈操作。

技巧总结

数据结构所设计的对象如何实现全局使用?

  1. 可以创建一个全局变量,这样各个方法操作的是同一个对象。
  2. 把需要全局适用的目标作为所设计的数据结构的属性,在构造器里面对其初始化,也可以达到全局使用的效果。

不推荐第二种方式,有时候并没有被初始化,目标对象仍然是空。如6066. 统计区间中的整数数目
在这里插入图片描述
在这里插入图片描述

构造器初始化

构造器初始化,当构造器的形参与属性名称相同时要给属性加上"this."才可以赋值,否则不能赋值!!!就像下面这样,没有给属性正常赋值。例981. 基于时间的键值存储
在这里插入图片描述

内部类

内部类可以放置在Solution 类的外面和里面,以及加不加public 都是可以的(在LeetCode上面)。

785. 判断二分图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值