摘要:
1,关键词解释 1.1 暴力递归: 1, 把问题转化为规模缩小了的同类问题的子问题 2, 有明确的不需要继续进行递归的条件(base case) 3, 有当得到了子问题的结果之后的决策过程 4, 不记录每一个子问题的解 1.2 动态规划: 1, 从暴力递归中来 2, 将每一个子问题的解记录下来,避免 阅读全文
摘要:
1.题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子 阅读全文
摘要:
1.使用vector模板 2.使用普通数组 参考资料: 1.《C++ Primer》中文版(第五版),Stanley B.Lippman等著,电子工业出版社 2.《C++ Primer》习题集(第五版),Stanley B.Lippman等著,电子工业出版社 阅读全文
摘要:
1.连续输入多个整型数据 循环语句while和for: while循环: 当输入不定的情况下,使用while循环比较合适,在windows系统下,先敲Ctrl+Z,再按Enter ——适用于整型输入结束; 对于非整型数据(如字符串数据)的连续输入,则需要使用第二部分内容的方式; for循环: 当输入 阅读全文
摘要:
1,问题描述 字符串模式匹配:串的模式匹配 ,是求第一个字符串(模式串:str2)在第二个字符串(主串:str1)中的起始位置。 注意区分: 子串:要求连续 (如:abc 是abcdef的子串) 子序列:可以不连续 (如:acd是abcdef的子序列) 2,简单字符串模式匹配(BF算法) 2.1 简 阅读全文
摘要:
1.题目描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 示例 2: 2.解题思路 算法核心框架:深度搜索+递归 深度搜索:整个岛屿是一个“二维矩阵” 阅读全文
摘要:
1.题目描述 设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。 注意: 允许出现重复元素。 示例: 2.解题思路 该题是之前那道Insert Delete GetRandom O(1)的拓展——允许插入重复的数字。 解题思路和之前的一样,使用的数据结构有两个: (1)一个数组 阅读全文
摘要:
1.题目描述 设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。 示例: 2.解题思路 分析:题目的难点在于有delete操作的情况下,要保证getRandom( )等概率随机返回集合中的一个元素。 一般地,题目的对时间复杂度的要求越高,都需要使用更多的辅助结构,以“空间换时间” 阅读全文
摘要:
1.题目要求 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的深度拷贝。 2.解题思路 (1)笔试思路(求速度,拿分数):使用哈希表 (2)面试思路(秀思维分析能力):不适用哈希表,将空间复杂度降低到O(1)。 阅读全文
摘要:
1.题目描述 请判断一个链表是否为回文链表。 示例 1: 示例 2: 进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 2.解法一:(空间复杂度O(n)) 遍历一遍链表压栈,借助栈把链表倒序,然后依次比较“原链表元素”和“新栈中元素”,如果都相等则返回true,否则返回fal 阅读全文