算法
wonderabd
这个作者很懒,什么都没留下…
展开
-
[LeetCode] 70.爬楼梯
斐波那契数列f[i]=f[i-1]+f[i-2]一开始偷懒开了数组,结果RE了。但显然不需要题目链接:70.爬楼梯class Solution {public: int climbStairs(int n) { //int f[100005]; long long t1,t2; t1=1; t2=1; ...原创 2019-03-16 17:01:48 · 71 阅读 · 0 评论 -
[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 · 73 阅读 · 0 评论 -
[LeetCode]73. 矩阵置零
题目描述:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。题目链接:73. 矩阵置零借鉴了评论区的思路:用两个布尔变量就可以解决。方法就是利用数组的首行和首列来记录行或列是否需要置0;两个布尔值记录首行首列是否需要置0。class Solution {public: void setZeroes(vector<...原创 2019-05-20 12:26:00 · 103 阅读 · 0 评论 -
[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 · 88 阅读 · 0 评论 -
[LeetCode]209. 长度最小的子数组
题目描述:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。题目链接:209. 长度最小的子数组滑动窗口算法。class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { ...原创 2019-05-24 16:07:01 · 80 阅读 · 0 评论 -
[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 · 94 阅读 · 0 评论 -
[LeetCode]319. 灯泡开关
题目描述:初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。 找出 n 轮后有多少个亮着的灯泡。题目链接:319. 灯泡开关容易想到,判断灯泡是否还亮着就是判断灯泡编号的因数个数的奇偶性。...原创 2019-05-18 19:33:16 · 159 阅读 · 0 评论 -
[LeetCode]672. 灯泡开关 Ⅱ
题目描述:现有一个房间,墙上挂有 n 只已经打开的灯泡和 4 个按钮。在进行了 m 次未知操作后,你需要返回这 n 只灯泡可能有多少种不同的状态。假设这 n 只灯泡被编号为 [1, 2, 3 …, n],这 4 个按钮的功能如下:将所有灯泡的状态反转(即开变为关,关变为开)将编号为偶数的灯泡的状态反转将编号为奇数的灯泡的状态反转将编号为 3k+1 的灯泡的状态反转(k = 0, 1, ...原创 2019-05-18 19:59:50 · 226 阅读 · 0 评论 -
[LeetCode]204. 计数质数
居然10天没更新了,罪过,罪过。上上周日参加了蓝桥杯国赛,没怎么特意准备,就靠LeetCode保持手感,果然跪了。进入正题。题目描述:统计所有小于非负整数 n 的质数的数量。题目链接:204. 计数质数筛法求素数。class Solution {public: int countPrimes(int n) { if (n==0) return 0; ...原创 2019-06-05 16:47:30 · 89 阅读 · 0 评论 -
[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 · 154 阅读 · 0 评论 -
[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 · 106 阅读 · 0 评论 -
[LeetCode]205. 同构字符串/207. 课程表
题目描述:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。题目链接:205. 同构字符串mapclass Solution {public: bool isIsomorphic(string s...原创 2019-07-31 23:17:37 · 113 阅读 · 0 评论 -
[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 · 313 阅读 · 0 评论 -
[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 · 153 阅读 · 0 评论 -
[LeetCode]88. 合并两个有序数组
可以用另一个vector存储提示:What if you fill the longer array from the end instead of start ?注意到原数组nums1[i]上的数最终位置必然大于等于i题目链接:88. 合并两个有序数组class Solution {public: void merge(vector<int>& n...原创 2019-03-16 17:23:06 · 81 阅读 · 0 评论 -
格雷编码的生成过程
G(i) = i ^ (i/2)^表示异或来源:LeetCode例题如 n = 3:G(0) = 000,G(1) = 1 ^ 0 = 001 ^ 000 = 001G(2) = 2 ^ 1 = 010 ^ 001 = 011G(3) = 3 ^ 1 = 011 ^ 001 = 010G(4) = 4 ^ 2 = 100 ^ 010 = 110G(5) = 5 ^ 2 = 10...转载 2019-03-12 16:01:03 · 1662 阅读 · 0 评论 -
[LeetCode]11.盛最多水的容器
O(n^2)的算法很容易想到,先试了一下,果然TLE。我只用了一个简单的优化方法,即if (height[i]<now) continue;即满足height[i]<height[pre] pre<i(pre=0,1,…,i-1)均不考虑显然这样的i无法得到更优的答案题目链接:11.盛最多水的容器class Solution {public: int m...原创 2019-04-06 20:43:25 · 61 阅读 · 0 评论 -
[LeetCode]164. 最大间距
桶排序的思想参考博文164. 最大间距class Solution {public: int maximumGap(vector<int>& nums) { int tip=nums.size(); if (tip<2) return 0; int minx=1e9; int maxx=-1e...转载 2019-04-21 15:02:47 · 118 阅读 · 0 评论 -
[LeetCode]136. 只出现一次的数字+260. 只出现一次的数字 III
求数组的异或值。ans=nums[0] ^ nums[1] ^ … ^ nums[n]交换律:a ^ b ^ c <=> a ^ c ^ b任何数与0异或为任何数 0 ^ n => n相同的数异或为0: n ^ n => 0136. 只出现一次的数字class Solution {public: int singleNumber(vector<...原创 2019-04-18 16:42:48 · 98 阅读 · 0 评论 -
[LeetCode]172. 阶乘后的零
非常非常非常经典的算法题。2*5=10对 n! 分解质因数,求出质因数中5的个数,因为2的个数必定比5的个数多,所以不需要考虑。172. 阶乘后的零class Solution {public: int trailingZeroes(int n) { long long tip=5; long long ans=0; while (...原创 2019-04-19 13:46:18 · 93 阅读 · 0 评论 -
[LeetCode]233. 数字1的个数
分别统计个位、十位、百位、千位……的“1”出现的次数233. 数字1的个数class Solution {public: int countDigitOne(int n) { long long ans=0; long long now=1; while (true){ if (n<now) break;...原创 2019-04-19 13:57:33 · 91 阅读 · 0 评论 -
[LeetCode]169. 求众数+229. 求众数 II
头条实习生面试的时候问过这个问题!(当时花了二十分钟才想出来最优解法)众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。把不同的数两两消除,剩下的就是那个出现次数大于 ⌊ n/2 ⌋ 的元素。如果数组有序,那么答案就是nums[nums.size()/2]。169. 求众数class Solution {public: int majorityElement(vector...原创 2019-04-20 11:27:52 · 82 阅读 · 0 评论 -
[LeetCode]152. 乘积最大子序列
找出一个序列中乘积最大的连续子序列边乘边找,维护pre1和pre2。pre1大于0的前缀乘积的最小值pre2小于0的前缀乘积的最大值对于序列中的零不乘,且重置累乘结果now,pre1和pre2。每次更新ans。152. 乘积最大子序列class Solution {public: int maxProduct(vector<int>&...原创 2019-04-24 23:35:58 · 76 阅读 · 0 评论 -
[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 · 64 阅读 · 0 评论 -
[LeetCode]263. 丑数+264. 丑数 II
263. 丑数class Solution {public: bool isUgly(int num) { if (num==0) return false; while (num%2==0) num/=2; while (num%3==0) num/=3; while (num%5==0) num/=5; ...原创 2019-04-30 16:09:08 · 122 阅读 · 0 评论 -
[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 · 113 阅读 · 0 评论