- 博客(99)
- 收藏
- 关注
转载 C++对象内存模型
原文1 原文2 深入研究C++多态(虚函数和虚继承) 虚函数与虚继承的异同: 同:他们有相似之处,都利用了虚指针(均占用类的存储空间)和虚表(均不占用类的存储空间)。 异:虚基类依旧存在继承类中,占用存储空间;虚函数不占用存储空间。 虚基类表存储的是虚基类相对直接继承类的偏移;而虚函数表存储的是虚函数地址。 ...
2019-05-09 12:14:20
211
原创 LeetCode--10. 正则表达式匹配(Regular Expression Matching)
题目描述 给定一个字符串 (s) 和一个字符模式 §。实现支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符。 ‘*’ 匹配零个或多个前面的元素。 匹配应该覆盖整个字符串 (s) ,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 示例 1: 输入: s = "aa" p = "a"...
2019-03-15 11:14:28
170
原创 LeetCode--15. 三数之和(3Sum)
题目描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 思路 class...
2019-03-14 11:32:00
166
原创 LeetCode--12. 整数转罗马数字(Integer to Roman)
题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的...
2019-03-13 15:13:38
260
原创 LeetCode--11.盛最多水的容器(Container With Most Water)
题目描述 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(...
2019-03-12 14:14:50
167
原创 LeetCode--13. 罗马数字转整数(Roman to Integer)
题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列...
2019-03-10 10:13:38
237
原创 LeetCode--4. 寻找两个有序数组的中位数(Median of Two Sorted Arrays)
题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 示例 2: nums1 = [1, 2] nums2 = [3, 4] 则中位数是...
2019-03-09 13:35:08
147
原创 LeetCode--5.最长回文子串(Longest Palindromic Substring)
题目描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 思路 1.暴力法 时间复杂度:O(n^3)(每一轮都是n+到1,类同n ^2,一
2019-03-08 11:58:56
280
原创 LeetCode--7.整数反转(Reverse Integer)
题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 思路 见代码 c...
2019-03-07 20:30:36
177
原创 LeetCode--3.Longest Substring Without Repeating Characters(无重复字符的最长子串)
题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew
2019-03-06 19:56:06
166
原创 LeetCode--1. 两数之和
题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 思路 1...
2019-03-06 17:20:25
142
原创 LeetCode--minimum-depth-of-binary-tree
题目描述 Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 思路 深度搜索,要注意的是只有左右子树的情况 class Solutio...
2019-03-05 17:57:17
141
原创 剑指offer--66.机器人的运动范围【完】
题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子? 时间限制:1秒 空间限制:32768K 热度...
2019-03-02 09:53:30
254
原创 剑指offer--65.矩阵中的路径
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符...
2019-03-01 18:56:52
135
原创 剑指offer--64.滑动窗口的最大值
题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...
2019-03-01 15:45:40
316
原创 剑指offer--63.数据流中的中位数
题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 时间限制:1秒 空间限制:32768K 热度指数:107883 思路 见代码 class Solution...
2019-03-01 14:01:10
123
原创 剑指offer--62.二叉搜索树的第k个结点
题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4 时间限制:1秒 空间限制:32768K 热度指数:157331 思路 中序遍历,递归 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *rig...
2019-02-28 22:30:19
124
原创 剑指offer--61.序列化二叉树
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 时间限制:1秒 空间限制:32768K 热度指数:135307 思路 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。 反序列化即序列化的逆过程 序列化过程,用先序遍历,遇到null则用’$'保存,用逗号分隔结点,(因为空子树也被表示出来了,故一种遍历模式即可还原二叉...
2019-02-28 18:40:41
207
原创 剑指offer--60.把二叉树打印成多行
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 时间限制:1秒 空间限制:32768K 热度指数:111808 思路 见代码 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...
2019-02-28 11:57:47
143
原创 剑指offer--59.按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推 时间限制:1秒 空间限制:32768K 热度指数:137483 思路 见代码 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *ri...
2019-02-28 11:40:20
142
原创 剑指offer--58.对称的二叉树
题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 时间限制:1秒 空间限制:32768K 热度指数:121507 思路 见代码 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNod...
2019-02-27 19:53:01
177
原创 剑指offer--57.二叉树的下一个结点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 时间限制:1秒 空间限制:32768K 热度指数:126800 思路 见代码 /* struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLink...
2019-02-27 19:41:22
124
原创 剑指offer--56.删除链表中重复的结点
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 时间限制:1秒 空间限制:32768K 热度指数:247898 本题知识点: 链表 思路 见代码注释 class Solution { public: List...
2019-02-27 19:10:58
142
原创 剑指offer--55.链表中环的入口结点
题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 时间限制:1秒 空间限制:32768K 热度指数:144136 本题知识点: 链表 思路 见代码 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL...
2019-02-27 16:10:45
160
原创 剑指offer--54.字符流中第一个不重复的字符
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符。 时间限制:1秒 空间限制:32768K 热度指数:100382 本题知识点: 字符串 思路 新建一个数组保存字符...
2019-02-27 14:59:36
140
原创 剑指offer--53.表示数值的字符串
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。 时间限制:1秒 空间限制:32768K 热度指数:112273 本题知识点: 字符串 思路 见代码 class Solution {
2019-02-26 20:48:38
121
原创 剑指offer--52.正则表达式匹配
题目描述 请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配 时间限制:1秒 空间限制:327
2019-02-26 19:37:17
270
原创 剑指offer--51.构建乘积数组
题目描述 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。 时间限制:1秒 空间限制:32768K 热度指数:91560 本题知识点: 数组 思路 剑指offer思路 B[i]的值可以看作下图的矩阵中每行的乘积。 下三角用连乘可以很容求得,上三角,从下向上也是连乘。 因...
2019-02-25 21:41:13
167
原创 剑指offer--50.数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 时间限制:1秒 空间限制:32768K 热度指数:180651 本题知识点: 数组 思路 一.新建一个bool数组,空间复...
2019-02-25 21:10:41
120
原创 剑指offer--49.把字符串转换成整数
题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 时间限制:1秒 空间限制:32768K 热度指数:151821 本题知识点: 字符串 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则...
2019-02-25 20:02:19
103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅