练习
灵魂胖子
这个作者很懒,什么都没留下…
展开
-
LeetCode ——283. 移动零
给定一个数组 nums, 编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序。例如, 定义 nums = [0, 1, 0, 3, 12],调用函数之后, nums 应为 [1, 3, 12, 0, 0]。注意事项:必须在原数组上操作,不要为一个新数组分配额外空间。尽量减少操作总数。让K = 0,然后依次找数组中不是0的数字,依次赋值在K处。再把从K开始,到数组尾部的位置赋值为0。...原创 2018-04-26 12:49:12 · 233 阅读 · 0 评论 -
字符串翻转
字符串翻转给定一个字符串,要求将字符串前面的若干字符移到字符串的尾部。例如,将字符串“abcdef”的前3个字符’a’、'b’和’c’移到字符串的尾部,那么原字符串将变成“defabc”。请写一个函数实现此功能。//解法一:蛮力移位//时间复杂度为O(mn),空间复杂度O(1)void LeftShiftOne(char* s, int n){ char t = s[0];//...原创 2018-10-02 16:35:57 · 2738 阅读 · 0 评论 -
剑指——24.二叉树的后序遍历序列
24.二叉树的后序遍历序列题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。class Solution {public: bool VerifySquenceOfBST(vector<int> sequence) { if (sequence.e...原创 2018-08-13 19:47:08 · 99 阅读 · 0 评论 -
剑指——58.二叉树的下一个结点
58.二叉树的下一个结点题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struc...原创 2018-08-13 19:49:21 · 122 阅读 · 0 评论 -
剑指——59.对称的二叉树
59.对称的二叉树题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(...原创 2018-08-14 12:46:54 · 116 阅读 · 0 评论 -
LeetCode —— 20. 有效的括号
20. 有效的括号给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"...原创 2018-08-13 19:58:48 · 181 阅读 · 0 评论 -
LeetCode——454. 四数相加 II
454. 四数相加 II给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。例如:输入:A =...原创 2018-07-14 15:47:14 · 1398 阅读 · 0 评论 -
LeetCode——350. 两个数组的交集 II
350. 两个数组的交集 II给定两个数组,写一个方法来计算它们的交集。例如:给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意: 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。class Solution {public: vector<int> ...原创 2018-07-05 10:46:34 · 462 阅读 · 0 评论 -
LeetCode——349. 两个数组的交集
349. 两个数组的交集给定两个数组,写一个函数来计算它们的交集。例子: 给定 num1= [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].提示:每个在结果中的元素必定是唯一的。我们可以不考虑输出结果的顺序。返回交集中的元素,我们就可以想到用set,可以天然的去重。class Solution {public: vector<int> i...原创 2018-07-05 10:39:41 · 204 阅读 · 0 评论 -
LeetCode——24. 两两交换链表中的节点
24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 //Definition for singly-l...原创 2018-07-16 21:47:07 · 187 阅读 · 0 评论 -
LeetCode——3. 无重复字符的最长子串
3. 无重复字符的最长子串给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。class S原创 2018-06-19 16:33:20 · 131 阅读 · 0 评论 -
LeetCode——11. 盛最多水的容器
11. 盛最多水的容器给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。注意:你不能倾斜容器,n 至少是2。class Solution {public: int maxArea(v...原创 2018-06-19 15:41:26 · 167 阅读 · 0 评论 -
LeetCode——209. 长度最小的子数组
209. 长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的子数组。如果不存在符合条件的子数组,返回 0。示例: 输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的子数组。//时间复杂度O(n)//空间复杂度O(1)class Solution {public:...原创 2018-06-19 15:38:44 · 574 阅读 · 0 评论 -
LeetCode —— 88. 合并两个有序数组
88.合并两个有序数组给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 ...原创 2018-05-31 22:59:48 · 571 阅读 · 0 评论 -
LeetCode——75. 分类颜色
75. 分类颜色给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、...原创 2018-05-25 10:08:05 · 495 阅读 · 0 评论 -
LeetCode——26. 删除排序数组中的重复项
26. 删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:...原创 2018-05-19 11:08:51 · 140 阅读 · 0 评论 -
LeetCode——27. 移除元素
27. 移除元素给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元...原创 2018-05-19 09:46:39 · 143 阅读 · 0 评论 -
剑指——4.替换空格
4.替换空格题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str, int length) { if (str == NULL || lengt...原创 2018-10-03 16:38:32 · 143 阅读 · 0 评论