自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只羊

一只重新学习C++的羊

  • 博客(70)
  • 资源 (2)
  • 收藏
  • 关注

原创 LeetCode - 220. 存在重复元素 III

掉坑总结:1)int类型值与参数t相加的时候可能出现溢出,编码的时候没有考虑到;2)理解为什么不能用upper_bound来判断,显然如果集合中存在的元素均远远大于当前给定的比较元素num,且num+t也小于给定的元素,则不管upper_bound(num-t) 或者 upper_bound(num+t)均指向第一个元素,无法判断。描述在整数数组 nums 中,是否存在两个下标 i 和 j,使得nums [i] 和nums [j]的差的绝对值小于等于 t ,且满足 i 和 j 的差的绝...

2021-01-30 16:51:04 91

原创 LeetCode - 217. 存在重复元素

描述给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contains-duplica..

2021-01-30 15:19:49 114

原创 LeetCode - 219. 存在重复元素 II

描述给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且 i 和 j的差的 绝对值 至多为 k。示例1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,2,3], k = 2输出: false来源:力扣(LeetCode)链接:https...

2021-01-30 14:59:47 87

原创 LeetCode - 447. 回旋镖的数量

描述给定平面上n 对 互不相同 的点points ,其中 points[i] = [xi, yi] 。回旋镖 是由点(i, j, k) 表示的元组 ,其中i和j之间的距离和i和k之间的距离相等(需要考虑元组的顺序)。返回平面上所有回旋镖的数量。示例 1:输入:points = [[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[0,0]]示例 2:输入:points = ...

2021-01-30 14:34:41 245

原创 LeetCode - 49. 字母异位词分组

掉坑总结:方法二中对字符串先排序,使用散列表的形式其实我一开始就想到了,但是我怀疑这样对所有字符串排序是否太耗时???(我是那样坚定的认为的),因此我才想出了方法一种那种通过下标的方式,然而现实就是我认为性能好的方法一效率远远低于我认为效率不好的方法二,也算一个警告,性能不是分析那样想当然的。描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:

2021-01-30 14:03:02 71

原创 LeetCode - 454. 四数相加 II

掉坑总结:关联容器中Container.count(key) 返回的是键值key出现的次数,在非mulpti中,要么是0要么是1,mulptiz中可能大于1,跟value值没有关系,其实这个点事直到的,大意了,在哪儿调试了好久。。。。描述给定四个包含整数的数组列表A , B , C , D ,计算有多少个元组 (i, j, k, l),使得A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度N,且 0 ≤ N ≤ ...

2021-01-29 12:03:10 104

原创 LeetCode - 18. 四数之和

掉坑总结:注意,该题中可能出现target为负数,因此不能像正数一样提前终止循环,比如一个测试用例如下(排序后)[-5, -4, -3, -2, 1, 3, 3, 5], target为-11,不能判断nums[0] = -5已经大于 -11就终止循环,当然如果是正数没有问题。代码如下(注释部分) for (int i = 0; i < n - 3; ++i) { if (i > 0 && nums[i] =..

2021-01-29 11:11:40 86

原创 LeetCode - 16. 最接近的三数之和

描述给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3<= nums[i]<= 10^3...

2021-01-28 21:51:02 70

原创 LeetCode - 15. 三数之和

描述给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <= nums.length <...

2021-01-28 20:35:55 124

原创 LeetCode - 451. 根据字符出现频率排序

描述给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2:输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。示例 3:输入:"Aabb"输

2021-01-28 16:15:51 178

原创 LeetCode - 724. 寻找数组的中心索引

描述给定一个整数类型的数组nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6..

2021-01-28 15:27:09 68

原创 LeetCode - 350. 两个数组的交集 II

描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果nums1的大小比nums2小很多,哪...

2021-01-27 21:48:31 91

原创 LeetCode - 349. 两个数组的交集

描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intersection-of-two-arra..

2021-01-27 21:46:20 108

原创 LeetCode - 242. 有效的字母异位词

描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problem.

2021-01-27 21:44:41 74

原创 LeetCode - 202. 快乐数

描述编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。示例:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1来源:力扣(Le...

2021-01-27 21:43:09 89

原创 LeetCode - 290. 单词规律

描述给定一种规律 pattern和一个字符串str,判断 str 是否遵循相同的规律。这里的遵循指完全匹配,例如,pattern里的每个字母和字符串str中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = "abba", str = "dog cat cat dog"输出: true示例 2:输入:pattern = "abba", str = "dog cat cat fish"输出: false示例 3:输入: patter...

2021-01-27 21:41:24 108

原创 LeetCode - 567. 字符串的排列

描述给定两个字符串s1和s2,写一个函数来判断 s2 是否包含 s1的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").示例2:输入: s1= "ab" s2 = "eidboaoo"输出: False注意:输入的字符串只包含小写字母两个字符串的长度都在 [1, 10,000] 之间来源:力扣(LeetCo...

2021-01-27 11:18:02 132

原创 LeetCode - 1128. 等价多米诺骨牌对的数量

描述给你一个由一些多米诺骨牌组成的列表dominoes。如果其中某一张多米诺骨牌可以通过旋转 0度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。形式上,dominoes[i] = [a, b]和dominoes[j] = [c, d]等价的前提是a==c且b==d,或是a==d 且b==c。在0 <= i < j < dominoes.length的前提下,找出满足dominoes[i] 和dominoes[j]等价的骨牌对 ...

2021-01-26 22:36:43 89

原创 LeetCode - 200. 岛屿数量

描述给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:输入:grid...

2021-01-26 16:34:02 131

原创 LeetCode - 959. 由斜杠划分区域

描述在由 1 x 1 方格组成的 N x N 网格grid 中,每个 1 x 1方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。(请注意,反斜杠字符是转义的,因此 \ 用 "\\"表示。)。返回区域的数目。示例 1:输入:[" /","/ "]输出:2解释:2x2 网格如下:示例 2:输入:[" /"," "]输出:1解释:2x2 网格如下:示例 3:输入:["\\/","/\\"]...

2021-01-25 19:18:50 107

原创 LeetCode - 897. 递增顺序查找树

写在前面的话:虽然这是一个简单题,但是做这道题目的时候顺便写了通过给定数组新建二叉树,打印二叉树等,掉了好几次坑,做一个简单总结1)普通二叉树不一定是完全二叉树,不要以为是二叉树就是完全二叉树;2)层序遍历跟(先、中、后序遍历)都不同,像个猪一样大意了,导致在打印二叉树哪儿对结果纠结了很久;3)后序遍历的时候,最后一个结点的左、右子节点都不一定为 nullptr, 如果有特殊需要记得处理,比如将最后一个结点的 left/right 都置位 nullptr;4)中序遍历的时候,最有一个结点

2021-01-25 16:25:14 94

原创 LeetCode - 674. 最长连续递增序列

描述给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。示例 1:输入:nums = [1,3,5,4,7]输出:3解释:最长连续递增序列是 [1,3,.

2021-01-24 22:14:44 69

原创 LeetCode - 1319. 连通网络的操作次数

描述用以太网线缆将n台计算机连接成一个网络,计算机的编号从0到n-1。线缆用connections表示,其中connections[i] = [a, b]连接了计算机a和b。网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。给你这个计算机网络的初始布线connections,你可以拔开任意两台直连计算机之间的线缆,并用它连接一对未直连的计算机。请你计算并返回使所有计算机都连通所需的最少操作次数。如果不可能,则返回-1 。示...

2021-01-23 17:12:36 95 1

原创 LeetCode - 1. 两数之和

描述给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6...

2021-01-22 20:24:24 67 1

原创 LeetCode - 2. 两数相加

描述给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9...

2021-01-22 20:08:15 76

原创 LeetCode - 989. 数组形式的整数加法

描述对于非负整数X而言,X的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果X = 1231,那么其数组形式为[1,2,3,1]。给定非负整数 X 的数组形式A,返回整数X+K的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:A = [2,7,4], K = 181输出:[4,5,5]解释:274 + 181 = 455示例 3:输入:A = [...

2021-01-22 19:39:44 105

原创 智能指针(第四章)(条款18,19,20,21)

条款18:使用 std::unique_ptr 管理具备专属所有权的资源要点速记*std::unique_ptr 是小巧,高速、具备只移型别的智能指针,对托管资源实施专属所有权语义*默认的,资源析构采用 delete 运算符来实现,但是可以指定自定义删除器,有状态的删除器或者函数指针实现的删除器会增加 std::unique_ptr 型别的对象尺寸,因为删除器是其一部分*无状态的函数对象,无捕获的 lambda 表达式不会增加智能指针的尺寸,应该优先使用*将 std::unique_pt

2021-01-21 22:39:08 185

原创 LeetCode - 438. 找到字符串中所有字母异位词

描述给定一个字符串s和一个非空字符串p,找到s中所有是p的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串s和 p的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的字母异位词。起始索引等于 6 的子串是 "bac", 它是 ...

2021-01-21 11:38:25 107

原创 LeetCode - 3. 无重复字符的最长子串

描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度...

2021-01-20 17:18:53 61

原创 LeetCode - 11. 盛最多水的容器

描述给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例 2...

2021-01-20 16:14:00 72

原创 LeetCode - 628. 三个数的最大乘积

描述给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-product-of-three-nu

2021-01-20 14:06:15 92

原创 LeetCode - 1584. 连接所有点的最小费用

描述给你一个points数组,表示 2D 平面上的一些点,其中points[i] = [xi, yi]。连接点[xi, yi] 和点[xj, yj]的费用为它们之间的 曼哈顿距离:|xi - xj| + |yi - yj|,其中|val|表示val的绝对值。请你返回将所有点连接的最小总费用。只有任意两点之间 有且仅有一条简单路径时,才认为所有点都已连接。示例 1:输入:points = [[0,0],[2,2],[3,10],[5,2],[7,0]]输出...

2021-01-19 20:59:59 259 1

原创 LeetCode - 721. 账户合并

描述给定一个列表 accounts,每个元素 accounts[i]是一个字符串列表,其中第一个元素 accounts[i][0]是名称 (name),其余元素是 emails 表示该账户的邮箱地址。现在,我们想合并这些账户。如果两个账户都有一些共同的邮箱地址,则两个账户必定属于同一个人。请注意,即使两个账户具有相同的名称,它们也可能属于不同的人,因为人们可能具有相同的名称。一个人最初可以拥有任意数量的账户,但其所有账户都具有相同的名称。合并账户后,按以下格式返回账户:每个账户的第一个元素...

2021-01-18 18:48:13 147

原创 迭代器(第4章)(条款26,27,28,29)

特别说明:作者写本书的时候C++11标准还没有发布,不同编译器厂商对C++标准的实现有些差异,导致现在去看书的部分内容和最新的C++标准以及大部分编译器的行为有些差异,请特别注意。条款26:iterator优先于const_iterator, reverse_iterator, const_reverse_iterator书中提到的例子,我进行了测试,除了连续存储的序列容器insert/erase成员函数的参数不能为reverse_iterator外,其他均可以,以及iterator与cons...

2021-01-17 22:22:16 95

原创 LeetCode - 209. 长度最小的子数组

描述给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组[4,3]是该条件下的长度最小的子数组。进阶:如果你已经完成了 O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。来源:力扣(LeetCode)链接:https://leetcode-cn...

2021-01-17 18:42:39 72

原创 LeetCode - 1232. 缀点成线

描述在一个XY 坐标系中有一些点,我们用数组coordinates来分别记录它们的坐标,其中coordinates[i] = [x, y]表示横坐标为 x、纵坐标为 y的点。请你来判断,这些点是否在该坐标系中属于同一条直线上,是则返回 true,否则请返回 false。示例 1:输入:coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]输出:true示例 2:输入:coordinates = [[1,1],[2,2]...

2021-01-17 11:34:36 97

原创 C++11/14/17新特性之 - 显示虚函数重载,显示禁用默认函数,强类型枚举

显示虚函数重载 // 显示虚函数重载 class Base1 { virtual void foo(int); }; class SubClass : Base1 { virtual void foo(int) override; // RIGHT virtual void foo(float) override; // ERROR,父类中没有改虚函数 }; class Base2 {

2021-01-16 21:48:20 156

原创 LeetCode - 803. 打砖块

描述有一个 m x n 的二元网格,其中 1 表示砖块,0 表示空白。砖块 稳定(不会掉落)的前提是:一块砖直接连接到网格的顶部,或者至少有一块相邻(4个方向之一)砖块 稳定 不会掉落时给你一个数组 hits ,这是需要依次消除砖块的位置。每当消除hits[i] = (rowi, coli) 位置上的砖块时,对应位置的砖块(若存在)会消失,然后其他的砖块可能因为这一消除操作而掉落。一旦砖块掉落,它会立即从网格中消失(即,它不会落在其他稳定的砖块上)。返回一个数组 result ,其中 r..

2021-01-16 17:43:40 92

原创 LeetCode - 947. 移除最多的同行或同列石头

描述n 块石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头。给你一个长度为 n 的数组 stones ,其中 stones[i] = [xi, yi] 表示第 i 块石头的位置,返回 可以移除的石子 的最大数量。示例 1:输入:stones = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]]输出:5解释:一种移除 5 块石头的方法如下所示:1. 移除石头 .

2021-01-16 15:27:21 333

原创 LeetCode - 1018. 可被 5 整除的二进制前缀

描述给定由若干0和1组成的数组 A。我们定义N_i:从A[0] 到A[i]的第 i个子数组被解释为一个二进制数(从最高有效位到最低有效位)。返回布尔值列表answer,只有当N_i可以被 5整除时,答案answer[i] 为true,否则为 false。示例 1:输入:[0,1,1]输出:[true,false,false]解释:输入数字为 0, 01, 011;也就是十进制中的 0, 1, 3 。只有第一个数可以被 5 整除,因此 answer[0...

2021-01-15 11:34:05 89

音视频学习常用工具, mediainfo,yuvplayer

音视频学习常用工具, mediainfo,yuvplayer

2022-03-26

业界常见虚拟数字人介绍

业界常见虚拟数字人介绍

2022-03-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除