自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 [LeetCode]210. 课程表 II/217. 存在重复元素/222. 完全二叉树的节点个数

题目链接:210. 课程表 IIclass Solution {public: vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) { vector<int> k; k.clear(); //用来返回...

2019-08-01 11:04:09 197

原创 [LeetCode]205. 同构字符串/207. 课程表

题目描述:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。题目链接:205. 同构字符串mapclass Solution {public: bool isIsomorphic(string s...

2019-07-31 23:17:37 188

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

题目描述:给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。题目链接:219. 存在重复元素 II用map解决,tip[i]表示数i最后出现的位置。class Solution {public: bool containsNearbyDuplicate(vecto...

2019-07-18 23:56:34 171

原创 [LeetCode]206. 反转链表

题目描述:反转一个单链表。题目链接:206. 反转链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solu...

2019-07-18 23:29:20 148

原创 [LeetCode]208. 实现 Trie (前缀树)

题目描述:实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。题目链接:208. 实现 Trie (前缀树)class Trie {public: /** Initialize your data structure here. */ Trie* next[35]; bool is_str; //是否是完整的...

2019-07-18 23:07:24 265

原创 [LeetCode]201. 数字范围按位与

题目描述:给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。题目链接:201. 数字范围按位与找出m和n的最长公共前缀(含位权)。class Solution {public: int rangeBitwiseAnd(int m, int n) { int ...

2019-07-05 16:54:19 262

原创 [LeetCode]337. 打家劫舍 III

题目描述:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。题目链接:337. 打家...

2019-06-09 15:30:04 173

原创 [LeetCode]204. 计数质数

居然10天没更新了,罪过,罪过。上上周日参加了蓝桥杯国赛,没怎么特意准备,就靠LeetCode保持手感,果然跪了。进入正题。题目描述:统计所有小于非负整数 n 的质数的数量。题目链接:204. 计数质数筛法求素数。class Solution {public: int countPrimes(int n) { if (n==0) return 0; ...

2019-06-05 16:47:30 141

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

题目描述:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。题目链接:209. 长度最小的子数组滑动窗口算法。class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { ...

2019-05-24 16:07:01 124

原创 [LeetCode]120. 三角形最小路径和

题目描述:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。题目链接:120. 三角形最小路径和for (int j=i;j>=0;j–)每一行从后往前更新,就能实现只使用 O(n) 的额外空间。class Solution {public: int minimumTotal(vector<vector<int>>&...

2019-05-24 15:54:35 194

原创 [LeetCode]118. 杨辉三角

题目描述:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。题目链接:118. 杨辉三角class Solution {public: vector<vector<int>> generate(int numRows) { vector<vector<int>> ans; ans...

2019-05-23 12:27:05 142

原创 [LeetCode]456.132模式

题目描述:给定一个整数序列:a1, a2, …, an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj。设计一个算法,当给定有 n 个数字的序列时,验证这个序列中是否含有132模式的子序列。题目链接:456.132模式思路参考评论区:last用来存储132中的2,即栈中小于当前值的最大元素,在操作过程中...

2019-05-22 16:55:07 144

原创 [LeetCode]413.等差数列划分

题目描述:如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。如果满足以下条件,则称子数组(P, Q)为等差数组:元素 A[P], A[p + 1], …, A[Q - 1], A[Q] 是等差的。并且 P +...

2019-05-22 15:55:29 161

原创 [LeetCode]112. 路径总和

题目描述:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。题目链接:112. 路径总和/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *...

2019-05-21 16:01:23 122

原创 [LeetCode]129. 求根到叶子节点数字之和

题目描述:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。题目链接:129. 求根到叶子节点数字之和/** * Definition for a binary tree node. * struct TreeNode { *...

2019-05-21 15:51:11 119

原创 [LeetCode]73. 矩阵置零

题目描述:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。题目链接:73. 矩阵置零借鉴了评论区的思路:用两个布尔变量就可以解决。方法就是利用数组的首行和首列来记录行或列是否需要置0;两个布尔值记录首行首列是否需要置0。class Solution {public: void setZeroes(vector<...

2019-05-20 12:26:00 156

原创 [LeetCode]215. 数组中的第K个最大元素

题目描述:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。题目链接:215. 数组中的第K个最大元素维护一个大小为k的小根堆,存数组中最大的k个元素。class Solution {public: int findKthLargest(vector<int>& nums, int k...

2019-05-19 15:15:25 125

原创 [LeetCode]414. 第三大的数

题目描述:给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。题目链接:414. 第三大的数class Solution {public: int thirdMax(vector<int>& nums) { long long big1=-1e18,big2=-1e18,big3=-1e...

2019-05-19 15:07:25 167

原创 [LeetCode]672. 灯泡开关 Ⅱ

题目描述:现有一个房间,墙上挂有 n 只已经打开的灯泡和 4 个按钮。在进行了 m 次未知操作后,你需要返回这 n 只灯泡可能有多少种不同的状态。假设这 n 只灯泡被编号为 [1, 2, 3 …, n],这 4 个按钮的功能如下:将所有灯泡的状态反转(即开变为关,关变为开)将编号为偶数的灯泡的状态反转将编号为奇数的灯泡的状态反转将编号为 3k+1 的灯泡的状态反转(k = 0, 1, ...

2019-05-18 19:59:50 323

原创 [LeetCode]319. 灯泡开关

题目描述:初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。 找出 n 轮后有多少个亮着的灯泡。题目链接:319. 灯泡开关容易想到,判断灯泡是否还亮着就是判断灯泡编号的因数个数的奇偶性。...

2019-05-18 19:33:16 249

原创 [LeetCode]300. 最长上升子序列

题目描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。题目链接:300. 最长上升子序列nlogn求最长上升子序列记录每个长度的上升子序列的 "结尾"的最小值class Solution {public: int lengthOfLIS(vector<int>& nums) { int tot=0; int x...

2019-05-16 21:29:00 153

原创 [leetcode]476.数字的补数

题目描述:给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。题目链接:476.数字的补数class Solution {public: int findComplement(int num) { long long tip=1; long long ans=0; while (num>0){ ...

2019-05-15 16:48:29 124

原创 [leetcode]374.猜数字大小

题目描述:我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):-1 : 我的数字比较小1 : 我的数字比较大0 : 恭喜!你猜对了!题目链接:374.猜数字大小就是二分……/...

2019-05-15 16:15:08 298

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

题目描述:给定两个数组,编写一个函数来计算它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。题目链接:349. 两个数组的交集class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2...

2019-05-14 20:09:24 137

原创 [LeetCode]338. 比特位计数

题目描述:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。题目链接:338. 比特位计数从更小的数递推得出,f[i]=f[i>>1]+(i&1? 1:0)class Solution {public: vector<int> countBits(int num) ...

2019-05-14 19:51:56 120

原创 [LeetCode]357. 计算各个位数不同的数字个数

题目描述:给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10^n 。题目链接:357. 计算各个位数不同的数字个数乘法原理。class Solution {public: int countNumbersWithUniqueDigits(int n) { if (n==0) return 1; if (n...

2019-05-14 19:41:04 211

原创 [LeetCode]983. 最低票价

题目描述:在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美元。通行证允许数天无限制的旅...

2019-05-13 19:24:09 263

原创 [LeetCode]322. 零钱兑换

题目描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。题目链接:322.零钱兑换简单DP。class Solution {public: static bool cmp(int x,int y){ return x>y; } ...

2019-05-13 18:49:56 152

转载 [LeetCode]321. 拼接最大数

参考:原博地址mergeVector非常巧妙!!321. 拼接最大数class Solution {public: vector<int> maxVector(vector<int> nums,int x){ vector<int> tip; tip.clear(); int drop=nums.s...

2019-05-12 16:47:09 1236 2

原创 [LeetCode]313. 超级丑数

时间复杂度 O(nk)313. 超级丑数class Solution {public: int nthSuperUglyNumber(int n, vector<int>& primes) { vector <int> ans(n+1,0); vector <int> p(primes.size(),1);...

2019-05-11 12:44:45 152

原创 [LeetCode]354. 俄罗斯套娃信封问题

排序后就类似于最长上升子序列问题。354. 俄罗斯套娃信封问题class Solution {public: struct node{ int w,h; }mem[10005]; static bool cmp(node x,node y){ if (x.w<y.w) return true; if (x...

2019-05-11 12:12:52 603

原创 [LeetCode]312. 戳气球

DPf[i][j]=max { f[i][k-1] + f[k+1][j] + nums[i-1] * nums[k] * nums[j+1] }戳破 i~j 的气球,最后一个戳破的气球是 k312. 戳气球class Solution {public: int maxCoins(vector<int>& nums) { int n=num...

2019-05-10 09:52:31 403

原创 [LeetCode]365. 水壶问题

注意到 z=ax+by,(a,b)取任意整数所以 z%gcd(x,y)=0365. 水壶问题class Solution {public: int gcd(int x,int y){ if (y==0) return x; else return gcd(y,x%y); } bool canMeasureWater(int x, in...

2019-05-10 08:17:51 385

原创 [LeetCode]203. 移除链表元素

ListNode* p 和 ListNode *p 的区别没有区别,只是风格问题……建议写成ListNode *p,可以同时定义多个变量。203. 移除链表元素(参考了评论区的写法)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next;...

2019-05-09 16:05:04 229

原创 [LeetCode]27. 移除元素

把数值等于val的元素移到数组的最后。27. 移除元素class Solution {public: int removeElement(vector<int>& nums, int val) { int n=nums.size(); int cnt=n-1; int temp; for (int i...

2019-05-09 15:51:43 97

原创 [LeetCode]283. 移动零

i 表示在原数组的下标,pos[i] 表示在新数组的下标,pos[i]<=i。即最终数组 i 位置的数不会在处理原数组 1~i-1 位置上的数时被覆盖。因此,for (int i=0;i<n;i++) 循环一遍处理即可。283. 移动零class Solution {public: void moveZeroes(vector<int>& nums...

2019-05-09 15:40:51 176

转载 [LeetCode]287. 寻找重复数

快慢指针算法287. 寻找重复数class Solution {public: int findDuplicate(vector<int>& nums) { int fast=0,slow=0; while (true){ fast=nums[nums[fast]]; slow=num...

2019-05-08 12:44:58 112

原创 [LeetCode]279. 完全平方数

f[i][j]表示 j 个完全平方数能否组合成 i ,通过递推进行判断。279. 完全平方数class Solution {public: int numSquares(int n) { int tip=1; while (tip*tip<=n){ tip++; } bool f[n+5][...

2019-05-08 12:25:10 118

原创 [LeetCode]216. 组合总和 III

216. 组合总和 IIIclass Solution {public: vector<vector<int>> ans; vector<int> temp; int tip; void solve(int x,int y,int tot){ if (tot==0 && x>tip){ ...

2019-05-07 16:27:17 177

原创 [LeetCode]268. 缺失数字

利用异或运算。预先求出 tmp=0 ^ 1 ^ 2 ^ 3 ^ … ^ n, 再求出 ans = tmp ^ nums[0] ^ nums [1] ^ … ^ nums[n-1],ans就是没有出现在序列中的那个数。268. 缺失数字class Solution {public: int missingNumber(vector<int>& nums) { ...

2019-05-07 16:14:25 119

空空如也

空空如也

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

TA关注的人

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