Leetcode刷题
陌离
这个作者很懒,什么都没留下…
展开
-
LeetCode 289 生命游戏
题目描述 方法一:使用额外数组 这里主要的技巧就是如何找到一个点周围的八个点,使用了一个8行2列的数组。 class Solution { int d[8][2] = {{0,-1},{-1,0},{0,1},{1,0},{-1,-1},{-1,1},{1,1},{1,-1}}; int m; int n; bool isArea(int x, int y){ ...原创 2020-04-02 11:22:45 · 99 阅读 · 0 评论 -
LeetCode 42接雨水
方法一: 暴力 —>超时 class Solution { int findLeftMaxHeight(vector<int>& height, int center){ int res = 0; for(int i = center - 1; i >=0; i--){ res = max(res, ...原创 2020-03-25 12:04:07 · 65 阅读 · 0 评论 -
leetcode 892 三维形体的表面积
在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。 输入:[[1,0],[0,2]] 输出:16 每个正方体能够贡献6个单位面积,两个正方体重叠的话,会减少2个单位面积。两个正方体重叠,分成垂直重叠、行重叠、列重叠三种。 表面积 = 正方体个数 * 6 ...原创 2020-03-25 10:14:43 · 123 阅读 · 0 评论 -
leetcode 945使数组唯一的最小增量
给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。 返回使 A 中的每个值都是唯一的最少操作次数。 输入:[3,2,1,2,1,7] 输出:6 解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。 可以看出 5 次或 5 次以下的 move 操作是不能让数组的每个值唯一的。 一定先看清题目,消除重复的方法只有递增。 方法一: 先进...原创 2020-03-22 12:13:31 · 158 阅读 · 0 评论 -
leetcode 647回文子串
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。 输入: "aaa" 输出: 6 说明: 6个回文子串: "a", "a", "a", "aa", "aa", "aaa". 判断是否是回文串,分成奇数和偶数两类,中心扩展。 如果是奇数,中心字符是当前字符,向两边扩展。 如果是偶数,中心字符是当前字符...原创 2020-03-19 12:40:25 · 59 阅读 · 0 评论 -
leetcode 409最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 示例 1: 输入: "abccccdd" 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7 回文串分成偶数的回文串和奇数的回文串,对于偶数的回文串,回文串的每个字符的数量都是偶数,对于奇数的回文串,除了中间的字符,其余字符的数量都是偶数。 解法一: class Solutio...原创 2020-03-19 12:28:50 · 82 阅读 · 0 评论 -
leetcode 836矩阵重叠
给定两个矩阵的左下坐标和右上坐标,如何判断这两个矩阵是否重叠? 解法一: 矩形重叠的情况太多,难以处理,所以转而思考矩形不重叠的情况。 考虑rec2在rec1的左边、右边、上边、下边 左边:rec1[0] >= rec2[2] 右边:rec1[2] <= rec2[0] 上边:rec1[3] <= rec2[1] 下边:rec1[1] >= rec2[3] class So...原创 2020-03-18 10:53:34 · 283 阅读 · 0 评论 -
leetcode 382 链表随机节点 蓄水池采样
如何从n个数中等概率的取出k个数?(n是不确定的或者确定的) 概率为k/n 蓄水池抽样:先将前k个数取出来放入结果集中,然后从第k+1个数开始遍历。假设遍历到第i个数,以k/i的概率去第i个数去替换掉蓄水池中的某个元素。 init: a reservior with size: k for i = k+1 to N: t = random(0,i); //[0,..i] if(t <...原创 2020-03-17 15:40:21 · 122 阅读 · 0 评论 -
leetcode 1160 拼写单词
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。 注意:每次拼写时,chars 中的每个字母都只能用一次。 返回词汇表 words 中你掌握的所有单词的 长度之和。 输入:words = ["cat","bt","hat","tree...原创 2020-03-17 13:50:16 · 91 阅读 · 0 评论 -
主定理求解递归式
1、主方法使用条件 用主方法求解递归式有条件,必须要求递归式为以下形式: 其中a>=1,b>1,f(n)渐进趋正,意为对足够大的n,f(n)是正的,即n>=n0n_0n 0 时,f(n)>0。 其中 n为问题规模, a为递推的子问题数量, n/b 为每个子问题的规模(假设每个子问题的规模基本一样), f(n)为递推以外进行的计算工作。 2、主方法具体使用 **核心是比...转载 2020-03-15 16:39:07 · 567 阅读 · 0 评论 -
leetcode 94二叉树的中序遍历
中序遍历:左–根--右 利用栈 struct Command{ public: string s;//"go" "print" TreeNode* node; Command(string s, TreeNode* node) : s(s), node(node){} }; class Solution { public: vector<int>...原创 2020-03-15 15:14:16 · 82 阅读 · 0 评论 -
leetcode 300最长上升子序列
动态规划 class Solution { public: int lengthOfLIS(vector<int>& nums) { int n = nums.size(); if(n == 0) return 0; vector<int> dp(n,0); int res = 0; ...原创 2020-03-14 16:01:19 · 75 阅读 · 0 评论 -
leetcode 只出现一次的数字
leetcode 136只出现一次的数字I 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 异或操作: 交换律:a ^ b ^ c <=> a ^ c ^ b 任何数于0异或为任何数 0 ^ n => n 相同的数异或为0: n ^ n => 0 class Solution { public: int ...原创 2020-03-13 12:56:27 · 109 阅读 · 0 评论 -
leetcode 1071字符串的最大公因子
对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。 返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。 输入:str1 = "ABCABC", str2 = "ABC" 输出:"ABC" 因子也称作约数,整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除...原创 2020-03-12 13:00:48 · 180 阅读 · 0 评论 -
美团2020后台校招题目--美团骑手包裹区间分组
2110年美团外卖火星第3000号配送站点有26名骑手,分别以大写字母A-Z命名,因此可以称呼这些骑手为黄家骑士特工A,黄家骑士特工B…黄家骑士特工Z,某美团黑珍珠餐厅的外卖流水线上会顺序产出一组包裹,美团配送调度引擎已经将包裹分配到骑手,并在包裹上粘贴好骑手名称,如RETTEBTAE代表一组流水线包裹共9个,同时分配给了名字为A B E R T的5名骑手。请在不打乱流水线产出顺序的情况下,把这组...原创 2020-03-12 15:12:30 · 1570 阅读 · 0 评论