leetcode
刷leetCode的代码
杨戬没有你我怎么活
喜欢的人是杨戬!
展开
-
leetCode201
class Solution {public: int rangeBitwiseAnd(int left, int right) { int i = 0; while(left != right) { left >>= 1; right >>= 1; i++; } return left << i; }原创 2021-04-16 15:57:22 · 178 阅读 · 0 评论 -
leetCode101
这道题的话,应该自信一点,就是一道很简单的判断两颗树是否一样的反转题。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x),原创 2021-02-24 20:02:35 · 55 阅读 · 0 评论 -
leetCode 91. 解码方法
这道题我一开始想用的是dfs,但是超时了。为什么会超时呢,应该是它的状态转移方程其实是只用两种情况的,而且没有那么多种变化情况需要记录,比如说如果是记录下不同的解码字符串,那么就要dfs,但是这里其实只要加减就可以了,所以应该想到用dp.index表示的是以当前字符作为结尾时一共有多少种解码情况。有两种,一种是以一个字符加进去,还有一种就是要结合前一个字符,即10-16.0的话要特殊判断一下,或者不在1-26时就要拆成一个一个的,不可能作为10-26来解码。class Solution {p原创 2021-02-24 19:53:35 · 76 阅读 · 0 评论 -
LeetCode75. 颜色分类
class Solution {public: void sortColors(vector<int>& nums) { int low = 0,high = nums.size()-1; int i = 0; while(low < high) { if(i == nums.size()) return; if(nums[i] == 0).原创 2021-02-24 19:28:16 · 51 阅读 · 0 评论 -
LeetCode 81. 搜索旋转排序数组 II
这道题我觉得用这张图就可以很好地表现出来,而且还很具体class Solution {public: bool search(vector<int>& nums, int target) { int low = 0,high = nums.size()-1; while(low <= high) { int mid = low + (high - low)/2; if(n原创 2021-02-24 19:07:41 · 46 阅读 · 0 评论 -
23. 合并K个升序链表
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists =原创 2020-09-18 18:39:14 · 143 阅读 · 0 评论 -
面试题 10.05. 稀疏数组搜索
稀疏数组搜索。有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置。示例1: 输入: words = ["at", "", "", "", "ball", "", "", "car", "", "","dad", "", ""], s = "ta" 输出:-1 说明: 不存在返回-1。示例2: 输入:words = ["at", "", "", "", "ball", "", "", "car", "", "","dad", "", ""], s = "bal原创 2020-09-18 15:16:44 · 123 阅读 · 0 评论 -
leetcode284 顶端迭代器
题目:给定一个迭代器类的接口,接口包含两个方法: next() 和 hasNext()。设计并实现一个支持 peek() 操作的顶端迭代器 – 其本质就是把原本应由 next() 方法返回的元素 peek() 出来。示例:假设迭代器被初始化为列表 [1,2,3]。调用 next() 返回 1,得到列表中的第一个元素。现在调用 peek() 返回 2,下一个元素。在此之后调用 next() 仍然返回 2。最后一次调用 next() 返回 3,末尾元素。在此之后调用 hasNext() 应该返回 f原创 2020-08-06 12:05:05 · 145 阅读 · 0 评论 -
leetcode334
标题给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。示例 1:输入: [1,2,3,4,5]输出: true示例 2:输入: [5,4,3,2,1]输出: false原创 2020-08-06 11:43:20 · 139 阅读 · 0 评论 -
1290. 二进制链表转整数
题目:给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例 2:输入:head = [0]输出:0示例 3:输入:head = [1]输出:1示例 4:输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]输出:18880示例 5:原创 2020-06-24 17:35:13 · 99 阅读 · 0 评论 -
leetcode 477
题目:两个整数的汉明距离 指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。示例:输入: 4, 14, 2输出: 6解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)所以答案为:HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.注意:数组中元.原创 2020-06-17 20:20:11 · 155 阅读 · 0 评论 -
leetcode 309
题目:给定一个整数数组,其中第i个元素代表了第i天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]题解: 这道题的难度就在于想出它一共有三种状态,...原创 2020-06-16 17:40:05 · 169 阅读 · 0 评论 -
leetcode 322 (动态规划)
题目:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可以认为每种硬币的数量是无限的。题解: 这个题目只有amount一...原创 2020-06-16 16:15:12 · 560 阅读 · 0 评论 -
leetcode 474
题目:难度中等163在计算机界中,我们总是追求用有限的资源获取最大的收益。现在,假设你分别支配着m个0和n个1。另外,还有一个仅包含0和1字符串的数组。你的任务是使用给定的m个0和n个1,找到能拼出存在于数组中的字符串的最大数量。每个0和1至多被使用一次。注意:给定0和1的数量都不会超过100。 给定字符串数组的长度不会超过600。示例 1:输入: Array = {"10", "0001", "111001", "...原创 2020-06-16 11:38:42 · 257 阅读 · 0 评论 -
leetcode372
题目:你的任务是计算ab对1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。示例 1:输入: a = 2, b = [3]输出: 8示例2:输入: a = 2, b = [1,0]输出: 1024题解: 这道题讲的是快速幂,快速幂的核心就是如pow(a,b), 将b视为二进制,假设b = 3,那么b为101,b0 = 1,b1 = 0, b2 = 1. a^b1 = b1*((a^b0)^2), a^b2 = b2*((a^b...原创 2020-06-12 20:14:30 · 258 阅读 · 0 评论 -
leetcode297
题目:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树: 1 / \ 2 3 / \ 4 5序列化为 "[1,2,...原创 2020-06-01 17:04:18 · 127 阅读 · 0 评论 -
leetcode433
题目:一条基因序列由一个带有8个字符的字符串表示,其中每个字符都属于 "A", "C", "G", "T"中的任意一个。假设我们要调查一个基因序列的变化。一次基因变化意味着这个基因序列中的一个字符发生了变化。例如,基因序列由"AACCGGTT"变化至"AACCGGTA"即发生了一次基因变化。与此同时,每一次基因变化的结果,都需要是一个合法的基因串,即该结果属于一个基因库。现在给定3个参数 — start, end, bank,分别代表起始基因序列,目标基因序列及基因库,请找出能够使...原创 2020-05-31 16:37:30 · 143 阅读 · 0 评论 -
leetcode413
题目:如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列。1, 1, 2, 5, 7数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。如果满足以下条件,则称子数组(P, Q)为等差数组:元素 A[P], A[p + 1],.原创 2020-05-30 22:22:11 · 168 阅读 · 0 评论 -
leetcode445
题目:给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 8 -> 0 -> 7题解:这是一道抖机灵题,要是把数都拆出来,就没有任何难度了。/** * Definition for singl.原创 2020-05-30 22:03:03 · 151 阅读 · 0 评论 -
leetcode452
题目:在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使..原创 2020-05-30 21:46:14 · 396 阅读 · 2 评论 -
leetcode435
题目:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。原创 2020-05-30 20:33:54 · 330 阅读 · 0 评论 -
leetcode456
题目:给定一个整数序列:a1, a2, ..., an,一个132模式的子序列ai, aj, ak被定义为:当 i < j < k 时,ai < ak < aj。设计一个算法,当给定有n 个数字的序列时,验证这个序列中是否含有132模式的子序列。注意:n 的值小于15000。示例1:输入: [1, 2, 3, 4]输出: False解释: 序列中不存在132模式的子序列。示例 2:输入: [3, 1, 4, 2]输出: True解释...原创 2020-05-30 11:12:03 · 222 阅读 · 0 评论 -
leetcode378
优先队列class Solution {public: int kthSmallest(vector<vector<int>>& matrix, int k) { priority_queue<int>q; for(vector<int>v : matrix) { for(int t:v) { q.push(t原创 2020-05-29 22:36:24 · 162 阅读 · 0 评论 -
leetcode781
数一下和自己报相同数字的兔子有多少个,如果超过了报的数x+1,那么多出来的兔子是属于另外的团体的。 class Solution {public: int numRabbits(vector<int>& answers) { int ans = 0; sort(answers.begin(),answers.end()); for(int i = 0;i<answers.size();i++)...原创 2020-05-29 19:26:14 · 157 阅读 · 0 评论 -
leetcode809
这道题没什么好说的class Solution {public: int expressiveWords(string S, vector<string>& words) { vector<pair<char,int>>s; int ans = 0; for(int i = 0; i<S.size();i++) { int num = 1;原创 2020-05-29 17:35:05 · 140 阅读 · 0 评论 -
leetcode845
先贴代码class Solution {public: int longestMountain(vector<int>& A) { vector<int>dp(A.size(),0); int ans = 0; for(int i = 1;i < A.size();i++) { if(A[i] > A[i-1]) {原创 2020-05-29 11:21:18 · 143 阅读 · 0 评论 -
leetcode495
哈哈哈,我以为是冯提莫呢!其实就是区间叠加class Solution {public: int findPoisonedDuration(vector<int>& timeSeries, int duration) { int ans = 0; int i = 0; int n = timeSeries.size(); for(int i = 0;i<n;i++原创 2020-05-28 22:53:15 · 118 阅读 · 0 评论 -
leetcode481
先贴一下代码class Solution {public: int magicalString(int n) { vector<int>tmp; tmp.push_back(1); tmp.push_back(2); tmp.push_back(2); int v = 2; //从坐标2开始制造字符串 int c = 0; //判断当前应该加的是1还是2原创 2020-05-28 22:21:55 · 114 阅读 · 0 评论 -
leetcode739
递减栈,因为题目要求是如果当前i找到了比它大的天气,就可以出栈,如果没有找到,就还要待在栈里,因此栈里后面进来的都是比它小的数,所以栈里没有找到答案的数都是呈递减分布的。 ...原创 2020-05-28 17:10:37 · 199 阅读 · 0 评论 -
leetcode394
其实是先把数字抠出来,然后再把括号内的一串给抠出来,用函数处理递归。class Solution {public: string decodeString(string s) { if(s.size() == 0) return ""; string ans = ""; for(int i = 0;i<s.size();i++) { if(isalpha(s[i])) ans.pu原创 2020-05-16 16:56:18 · 146 阅读 · 0 评论 -
leetcode368
dp因为一开始的数一定是后面的某几个数的因子,相当于从一个点发散了多条路径,因此要记住上一点是谁class Solution {public: vector<int> largestDivisibleSubset(vector<int>& nums) { vector<int>ans; if(nums.size() == 0) return ans; vector<int&原创 2020-05-16 16:23:43 · 157 阅读 · 0 评论 -
leetcode365
这道题的关键是只有两个瓶子,因此每次只能变化x或者y量的水,因此z = ax + by。而z在为x,y的最大公约数倍数时有解。class Solution {public: bool canMeasureWater(int x, int y, int z) { if(x + y < z) return false; if(z == 0) return true; if(x == 0 || y == 0) ...原创 2020-05-16 14:30:40 · 178 阅读 · 0 评论 -
leetcode343
这道题的关键是设组成n中的一个数是不用拆分的,否则全部拆分的话都成1了。然后比较n-i和mp[n-i]谁和i乘起来比较大。class Solution {public: unordered_map<int,int>mp; int integerBreak(int n) { return deal(n); } int deal(int n) { if(n == 1) return 1; if(原创 2020-05-16 11:26:08 · 153 阅读 · 0 评论 -
leetcode337
这道题的关键是是否取当前结点的值,还是取左右孩子的值。如果搜索到了当前的结点,就表示当前结点的值是可以被纳入总和之中的,否则就看它的左右孩子的值,而左右孩子的值此时可以被纳入总和,因此可以用函数来表示当前的值。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * T...原创 2020-05-16 10:37:00 · 144 阅读 · 0 评论 -
leetcode357
用dfsclass Solution {public: int ans = 0; int countNumbersWithUniqueDigits(int n) { dfs(0,0,n); return ans; } void dfs(int cnt,int len,int n) { if(l...原创 2020-03-28 14:54:43 · 125 阅读 · 0 评论 -
还在网站上直接写leetcode?快用vscode
如上题所示,我们可以在vscode上面安装leetcode插件,登录上去后就可以开心地写代码啦~ 官方教程:https://github.com/jdneo/vscode-leetcode/blob/master/docs/README_zh-CN.md 我们需要先安装Node.JS,然后安装leetcode插件 大概这个样子 ...原创 2020-03-28 09:58:32 · 202 阅读 · 0 评论 -
leetcode355
class Twitter {private: vector<pair<int,int>>all;//all tweets map<int,vector<int>>mp;public: /** Initialize your data structure here. */ Twitter() { ...原创 2020-02-19 23:14:07 · 152 阅读 · 0 评论 -
leetcode210
一样的思路嘛class Solution {public: vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) { vector<vector<int>>edge(numCourses,vector<...原创 2020-02-13 23:47:27 · 116 阅读 · 0 评论 -
leetcode207
现在你总共有 n 门课需要选,记为0到n-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?这道题是拓扑排序,记住模板有没有就好了,理解上也很简单,一个一个删掉入度为0的点,看看还有没有剩下的点就好了class Solution {...原创 2020-02-13 23:29:11 · 151 阅读 · 0 评论 -
leetcode397
给定一个正整数n,你可以做如下操作:1. 如果n是偶数,则用n / 2替换n。2. 如果n是奇数,则可以用n + 1或n - 1替换n。n变为 1 所需的最小替换次数是多少?迭代,将integerReplacement(n)视为从n变到1需要多少步。class Solution {public: int integerReplacement(int ...原创 2020-01-08 23:47:18 · 235 阅读 · 1 评论