![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计类题
文章平均质量分 52
C+G
也就那样
展开
-
随机矩阵位置构造题——519. 随机翻转矩阵
文章目录题目题目解析解题代码 题目 OJ平台 题目解析 首先读懂出这种问题的意图: 这是要我们随机构造得到一个符合要求的矩阵位置!注意仅仅只是得到符合要求的位置,我们不需要真正的去构建这样一个矩阵,但是我们需要通过要求模拟每次对矩阵操作的影响。 如何解题? 我们先观察每一次 flip 后的现象,由于 flip 只对没有被翻转过的位置有效(为0的位置),而每一次进行 reset 操作后,都会重置之前进行的 flip 操作。 首先我们通过一维来表示二维以方便取随机数的映射,其次我们需要进行一个 分块 的操作,原创 2021-11-27 23:29:37 · 283 阅读 · 0 评论 -
leetcode设计类题目——677. 键值映射
文章目录题目需求分析代码部分 题目 OJ平台 需求分析 需求: 插入单词与值形成联系 查询前缀对应的所有单词的值的和 很明显,直接用字典树便可完成这个需求。 但有一个问题:如何快速得到这个前缀对应的所有单词的和? 很简单的处理方式就是利用哈希表对每个单词的权值进行记录 ,如果出现替换键值映射的情况,那就将这次的加和值减去原来的值。 当然也可不用哈希表,直接多设置一个 f 标记用于区分单词结尾,顺便记录这个单词对应的权值,如果出现键值替换的情况,直接就将这个值从头再减去一遍即可。 代码部分 解题代码原创 2021-11-14 15:36:22 · 996 阅读 · 0 评论 -
(cpp实现)设计链表快速实现O(1)尾插和头插
内存细节讨论 不要用静态分配的方式设计!!!因为一旦离开该数据的作用范围,它会被自动销毁,而动态分配则完全不同,它由于不会销毁内存,所以只要找到了地址便可以得到该块内存区域的数据。 由于是动态分配,动态分配在 C/C++ 中它并不会自动回收,需要手动释放内存,所以最好把析构函数写好。 构造函数和析构函数 以及基本的结构定义 struct listNode{ int val; listNode* next; listNode(int v):val(v),next(nullptr).原创 2021-07-10 20:50:34 · 249 阅读 · 1 评论 -
(实战类编程题)点菜展示表实现--利用哈希表作值
文章目录题目题目解析逐步解析代码建立哈希表映射数组记录数据并排序更新table(copy函数的使用)整合答案做题收获 题目 题目解析 读完题目,我们需要确定的有三点: 菜品名目。2. 顾客所在餐桌号。3. 该餐桌号该类菜品需要的数目。 题目中还要求,菜品名目需要按照字典序排序,所在餐桌号也需要如此。 根据以上解读我们可以给出以下方法进行逐一解决: 建立哈希表用于记录映射关系:创建以哈希表为 value 的哈希表,通过餐桌号来索引到另一个哈希表,另一哈希表用于记录这一桌所点的菜的种类对应的原创 2021-07-06 23:34:23 · 156 阅读 · 0 评论 -
设计一个可以常数时间插入和删除的集合--设计问题
文章目录题目如标题所示代码+具体注释 题目如标题所示 不过多加一个随机返回其中一个元素的函数,也是O(1)时间复杂度级别。 代码+具体注释 class RandomizedSet { private ArrayList<Integer> list; private HashMap<Integer,Integer> map; private int endPointer; private Random random; /** Initia原创 2021-05-28 23:33:58 · 69 阅读 · 0 评论 -
小伙子花了一下午终于写出来BFS的序列化与反序列化!!!
文章目录题目解题思路代码 题目 初看题目可能会很懵逼,实际上就是一个把二叉树的数据-->字符串,然后通过这个字符串又能转为原来的二叉树。 解题思路 序列化:用','对每个数值进行分割,碰到null将其表示为'X' 反序列化:需要三个过程:<1>把原来的字符串进行分割成单独的数据(不存在',')。<2>把字符串转为int型整数。<3>进行反序列化过程,用一个sum、count变量存储相应信息,对第一步的列表进行遍历制造层序二叉树,这个过程同样也需要用到第二步的原创 2021-05-27 20:59:07 · 206 阅读 · 0 评论