
C/C++
文章平均质量分 62
1000sakura
https://home.cnblogs.com/u/1000sakura/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【LeetCode】Linked List Cycle II(环形链表 II)
这道题是LeetCode里的第142道题。题目要求:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1...原创 2018-11-09 13:41:31 · 179 阅读 · 0 评论 -
【LeetCode】Grid Illumination(网格照明)
这道题是LeetCode里的第1001道题。题目要求:在N x N的网格上,每个单元格(x, y)上都有一盏灯,其中0 <= x < N且0 <= y < N。最初,一定数量的灯是亮着的。lamps[i]告诉我们亮着的第i盏灯的位置。每盏灯都照亮其所在 x 轴、y 轴和两条对角线上的每个正方形(类似于国际象棋中的皇后)。对于第i次...原创 2019-03-08 22:05:51 · 412 阅读 · 0 评论 -
【LeetCode】Maximum Depth of Binary Tree(二叉树的最大深度)
这道题是LeetCode里的第104道题。给出题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。DFS 递归算...原创 2019-03-15 20:30:37 · 164 阅读 · 0 评论 -
【LeetCode】Same Tree(相同的树)
这道题是LeetCode里的第100道题。这是题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]...原创 2019-03-15 22:27:18 · 156 阅读 · 0 评论 -
【LeetCode】Palindrome Number(回文数)
这道题是LeetCode里的第9道题。题目说的:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: fal...原创 2019-03-15 23:35:36 · 199 阅读 · 0 评论 -
【LeetCode】Intersection of Two Linked Lists(相交链表)
这道题是LeetCode里的第160道题。题目讲的:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of ...原创 2019-03-16 09:59:34 · 179 阅读 · 0 评论 -
【LeetCode】Valid Parentheses(有效的括号)
这道题是LeetCode里的第20道题。题目要求:给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true...原创 2019-03-16 10:21:27 · 227 阅读 · 0 评论 -
【总集】C++ STL类库 vector 使用方法
介绍:1.vector 的中文名为向量,可以理解为一个序列容器,里面存放的是相同的数据结构类型,类似于数组但与数组又有微妙的不同。2.vector 采用的是连续动态的空间来存储数据,它是动态的数组,它不仅可以使用下标访问每一个位置的数据,还可以对它的长度进行改变,十分的灵活。但是它的灵活也是有代价的,我们都知道,数组在内存中的长度是开始声明的时候就已经确定好了,要改变长度,就意味着需要重新...原创 2019-03-16 15:11:24 · 256 阅读 · 1 评论 -
【LeetCode】Permutations(全排列)
这道题是LeetCode里的第46道题。题目要求:给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]回溯法解题,函数的递归调用。提交代码:class Solution {public:...原创 2019-03-30 13:40:26 · 133 阅读 · 0 评论 -
【LeetCode】Unique Email Addresses(独特的电子邮件地址)
这道题是LeetCode里的第929道题。题目要求:每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。例如,在alice@leetcode.com中,alice是本地名称,而leetcode.com是域名。除了小写字母,这些电子邮件还可能包含'.'或'+'。如果在电子邮件地址的本地名称部分中的某些字符之间添加句点('.'),则发往那里的邮件将会转发...原创 2019-03-23 15:20:40 · 3368 阅读 · 0 评论 -
【LeetCode】Game of Life(生命游戏)
这道题是LeetCode里的第289道题。题目描述:根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞具有一个初始状态live(1)即为活细胞, 或dead(0)即为死细胞。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果...原创 2019-03-30 14:11:55 · 1249 阅读 · 0 评论 -
【LeetCode】Balanced Binary Tree(平衡二叉树)
这道题是LeetCode里的第110道题。题目要求:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回true。示例...原创 2019-03-30 14:52:14 · 176 阅读 · 0 评论 -
【LeetCode】Binary Tree Preorder Traversal(二叉树的前序遍历)
这道题是LeetCode里的第144道题。题目要求:给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶:递归算法很简单,你可以通过迭代算法完成吗?解题代码:/** * Definition for a binary tree node....原创 2019-03-30 14:59:52 · 197 阅读 · 0 评论 -
【LeetCode】Binary Tree Inorder Traversal(二叉树的中序遍历)
这道题是LeetCode里的第94道题。题目要求:给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶:递归算法很简单,你可以通过迭代算法完成吗?解题代码:/** * Definition for a binary tree node. * str...原创 2019-03-30 15:05:19 · 158 阅读 · 0 评论 -
【LeetCode】Binary Tree Postorder Traversal(二叉树的后序遍历)
这道题是LeetCode里的第145道题。题目要求:给定一个二叉树,返回它的后序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶:递归算法很简单,你可以通过迭代算法完成吗?解题代码:/** * Definition for a binary tree node. ...原创 2019-03-30 15:10:19 · 212 阅读 · 0 评论 -
【LeetCode】Binary Tree Level Order Traversal(二叉树的层次遍历)
这道题是LeetCode里的第102道题。题目要求:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解题...原创 2019-03-30 15:18:02 · 124 阅读 · 0 评论 -
【LeetCode】Jewels and Stones(宝石与石头)
这道题是LeetCode里的第771道题。题目要求:给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出...原创 2019-03-23 16:06:31 · 219 阅读 · 0 评论 -
【LeetCode】To Lower Case(转换成小写字母)
这道题是LeetCode里的第709道题。题目要求:实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: "Hello"输出: "hello"示例 2:输入: "here"输出: "here"示例3:输入: "LOVELY"输出: "lovely"...原创 2019-03-23 16:26:07 · 235 阅读 · 0 评论 -
【数据结构与算法】二叉树——哈夫曼编码
最近有很多的小朋友问我什么是哈夫曼编码,哈夫曼编码是一种可变字长的编码,那什么是可变字长呢?就是一句话里的每一个字符(ASCII码)它的位数(长度)是不一样的。就像我们一句话(AAAACCCCCDDDDBBE)有A,B,C,D,E五种字符,在这里我们可以用01表示A字符,用001表示B字符,用11表示C字符,用10表示D字符,用000表示E字符。如下图:既然知道了哈夫曼编码是什么了,那又有...原创 2018-11-25 13:44:36 · 1184 阅读 · 1 评论 -
【LeetCode】Count and Say(报数)
这道题是LeetCode里的第38道题。题目要求:报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11被读作"two 1s"("两个一"), 即21。21被读作"...原创 2019-02-03 17:14:38 · 250 阅读 · 0 评论 -
【LeetCode】Combination Sum II(组合总和 II)
这道题是LeetCode里的第40道题。题目要求:给定一个数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。示例1:输入: candidates =[10,...原创 2019-02-03 00:52:36 · 237 阅读 · 0 评论 -
【LeetCode】Add Two Numbers(两数相加)
这道题是LeetCode里的第2道题。题目要求:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -&...原创 2018-11-14 21:11:35 · 169 阅读 · 0 评论 -
【LeetCode】Symmetric Tree(对称二叉树)
这道题是LeetCode里的第101道题。是我在学数据结构——二叉树的时候碰见的题。题目如下:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3]则...原创 2018-11-24 13:21:58 · 236 阅读 · 0 评论 -
【LeetCode】Path Sum(路径总和)
这道题是LeetCode里的第112道题。是我在学数据结构——二叉树的时候碰见的题。题目要求:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ ...原创 2018-11-24 16:36:23 · 655 阅读 · 0 评论 -
【数据结构与算法】线性表——删除重复元素
线性表是一种随机存取的结构,和链表不同,链表顺序存取的结构。但是,线性表是一种顺序存储的结构,而链表是链式存储结构。两者都是线性的,但区别不同。进入主题:1.假如有一串数据元素,要求删除其中的重复元素。首先想到的是用两层循环,第一层从第一个元素开始,第二层从第一层元素的下一个元素开始。就是假如第一层是ai元素,则第二层就为ai+1元素。函数实现:void Purge1(E...原创 2018-11-25 13:57:22 · 2173 阅读 · 0 评论 -
【数据结构与算法】链表——递增排序
今天看书时偶然想到的问题,书上是要求将一个数据插入一个有序链接的线性链表中,所以我想先进行链表内的数据排序在进行插入数据。在这里我只写了排序的函数。函数实现:void Sort(LinkList&list, int &n) { for (int i = 0; i < n - 1; i++) { LinkList p = list, q; q ...原创 2018-11-25 14:05:09 · 1424 阅读 · 0 评论 -
【LeetCode】Spiral Matrix(螺旋矩阵)
这道题是LeetCode里的第54道题。题目要求:给定一个包含mxn个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [...原创 2018-11-28 21:04:03 · 148 阅读 · 0 评论 -
【LeetCode】Swap Nodes in Pairs(两两交换链表中的节点)
这道题是LeetCode里的第24题。题目要求:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定1->2->3->4, 你应该返回2->1->4->3.说明:你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。这道题还是很简单的,题目说明也很清晰。画画图就能完成题...原创 2018-12-01 12:58:27 · 338 阅读 · 1 评论 -
【LeetCode】Reverse Nodes in k-Group(k个一组翻转链表)
这道题是LeetCode里的第25道题。题目要求:给出一个链表,每k个节点一组进行翻转,并返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当k= 2 时,应当返回:2->1->4->3->...原创 2018-12-01 13:54:59 · 156 阅读 · 0 评论 -
【LeetCode】Linked List Cycle(环形链表)
这道题是LeetCode里的第141道题。题目要求:给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?简单题,但是还是得学一下这道题的做法,这道题是用双指针一个fast,一个slow。fast每一步前进两个节点,slow前进一个节点。判断fast和slow是否相等或者为空就行了。贴个代码:/** * Definition for singly-...原创 2018-12-01 14:22:55 · 356 阅读 · 0 评论 -
【LeetCode】Design Linked List(设计链表)
这道题是LeetCode里的第707到题。这是在学习链表时碰见的。题目要求:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性prev以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:...原创 2018-12-01 14:37:26 · 368 阅读 · 0 评论 -
【LeetCode】Roman to Integer(罗马数字转整数)
这道题是LeetCode里的第13道题。题目说明:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 100...原创 2018-12-01 20:24:54 · 258 阅读 · 0 评论 -
【LeetCode】Integer to Roman(整数转罗马数字)
这道题是LeetCode里的第12道题。吐了,刚做完“罗马数字转整数”,现在又做这个。这个没什么想法,只能想到使用if语句嵌套,或者使用哈希表。但哈希表我还不熟练啊。先拿if嵌套练练手。题目说道:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X ...原创 2018-12-01 21:07:50 · 331 阅读 · 0 评论 -
【LeetCode】Maximum Subarray(最大子序和)
这道题是LeetCode里的第53道题。题目描述:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。...原创 2019-01-29 20:06:31 · 203 阅读 · 0 评论 -
【LeetCode】Two Sum(两数之和)
这道题是LeetCode里的第1道题。题目描述:给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] =...原创 2019-01-29 20:37:02 · 243 阅读 · 0 评论 -
【LeetCode】ZigZag Conversion(Z 字形变换)
这道题是LeetCode里的第6道题。题目要求:将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为"LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESI...原创 2019-01-31 23:57:20 · 210 阅读 · 0 评论 -
【LeetCode】String to Integer (atoi)(字符串转换整数 (atoi))
这道题是LeetCode里的第8道题。题目要求:请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符...原创 2019-02-01 16:24:46 · 185 阅读 · 0 评论 -
【LeetCode】Combination Sum(组合总和)
这道题是LeetCode里的第39道题。题目描述:给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。 解集不能包含重复的组合。示例1:输入: candidates ...原创 2019-02-02 21:01:14 · 304 阅读 · 0 评论 -
【LeetCode】Binary Tree Level Order Traversal II(二叉树的层次遍历 II)
这道题是LeetCode里的第107道题。题目描述:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,...原创 2019-04-30 22:47:54 · 156 阅读 · 0 评论