
每日一题
文章平均质量分 54
城南花已开.jpg
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode----22. 括号生成
对于每个位置我们都有两种选择(放左括号或右括号),为了生成有效的括号,右括号剩余个数要比左括号的剩余个数大才能放右括号。class Solution { vector<string>v;public: vector<string> generateParenthesis(int n){ dfs(n,n,""); retu...原创 2020-04-11 16:28:22 · 144 阅读 · 0 评论 -
leetcode----面试题13. 机器人的运动范围
题目链接----------------------->面试题13. 机器人的运动范围很简单的一道搜索题,之前都是用递归做的,这次用栈来实现dfs,其实本质是一样的,帖下代码:int movingCount(int m, int n, int k) { int cnt = 1,sum; int fxy[4][2]={{1,0},{-1,0},{0,1},{0,-1}};...原创 2020-04-08 21:27:18 · 166 阅读 · 0 评论 -
leetcode----面试题 01.07. 旋转矩阵
题目链接--------------->leetcode----面试题 01.07. 旋转矩阵这个题只要我们自己手动模拟一边旋转过程,很容易就找出规律来。方法一:对于一个num[i][j]num[i][j]num[i][j]来说它旋转后的位置为num[j][n−1−i]num[j][n-1-i]num[j][n−1−i],我们使用一个数组来保存原数组的值,然后双重循环对原数组复制即可。...原创 2020-04-07 19:53:32 · 220 阅读 · 0 评论 -
leetcode----72. 编辑距离
日常菜的一天????????????题目链接------------------------------------>72. 编辑距离这是一道动态规划问题,我们定义dp[i][j]dp[i][j]dp[i][j] 代表word1的前 i 个字符到word2的前 j 个字符的最少操作次数。需要注意的是,对word1的增加一个字符和对word2删除一个字符是等价的,因为我们只关心操作次数,例如对于ho–&g...原创 2020-04-06 20:16:57 · 183 阅读 · 0 评论 -
Lettcode----84. 柱状图中最大的矩形
方法一:暴力遍历所有柱子,对于一根柱子将它向左右扩展算出面积,若比最大面积大则更新最大面积。时间复杂度O(n2)O(n^2)O(n2)int largestRectangleArea(vector<int>& heights) { int len = heights.size(); if(len == 0) return 0; in...原创 2020-04-05 12:40:51 · 177 阅读 · 0 评论 -
leetcode----42. 接雨水
方法一:维护一个栈底到栈顶严格单调递减的单调栈这题需要算出凹面积的总和,我们维护一个单调栈,当我们要插入的柱子不满足单调栈的性质时,会和栈顶的柱子形成凹面,我们将栈顶弹出并计算出凹面的面积,一直重复直到该柱子满足单调栈的性质将其插入。面积的计算方法:(弹出的栈顶柱子的左右柱子的高度最小值−弹出的柱子高度)×(需要插入柱子的位置−弹出的柱子的位置−1)(弹出的栈顶柱子 的左右柱子 的高度最小值...原创 2020-04-04 14:35:40 · 156 阅读 · 0 评论 -
leetcode----8. 字符串转换整数 (atoi)
题目链接--------------------->8. 字符串转换整数 (atoi)这道题目没什么好说的,就是要对各个情况要考虑全面,要注意细节 int myAtoi(string str) { int len = str.length(),flag = 1; long long int num = 0; int ans = 214...原创 2020-04-03 23:09:21 · 141 阅读 · 0 评论 -
leetcode----289. 生命游戏
题目链接------------>289. 生命游戏这道题我们按照题目的描述模拟细胞状态变化就可以了,由于是每个细胞根据周围的细胞状态进行变换,并且题目要求所有细胞的状态是同时变换的,所以我们需要一个新的二维数组来存放细胞最初始的状态。 void gameOfLife(vector<vector<int>>& board) { int...原创 2020-04-02 17:45:54 · 171 阅读 · 0 评论 -
leetcode----1111. 有效括号的嵌套深度
题目链接----------------------------->1111. 有效括号的嵌套深度其实这个题目的意思就是把一个有效括号字符串分成A和B两个字符串,使得这两个字符串的嵌套深度中最大的那个近可能的小。答案不唯一。这个题算是有效括号的升级版吧,最基础的是模拟栈,因为你要保证A和B是有效括号,看到题目我想到的方法是,算出最大的嵌套深度,然后除以二平均分给A和B两个字符串。vec...原创 2020-04-01 22:11:39 · 255 阅读 · 0 评论 -
leetcode----912. 排序数组
这是一个排序题,都是老生常谈的东西了,之前都是用的排序算法都是通过比较大小进行排序,贴一下不用比较大小的计数排序的代码(不算严格意义的计数排序)vector<int> sortArray(vector<int>& nums) { int len = nums.size(); int max_num = -0x3ffff,min_num = 0x3...原创 2020-03-31 15:23:54 · 189 阅读 · 2 评论 -
Leetcode----面试题62. 圆圈中最后剩下的数字
我想到的方法是模拟,看了一下数据范围肯定超时,想着肯定有数学解法,看了下题解果然是有的。今天又是菜的一天。这是一个经典的约瑟夫环的问题,我们先看一下,题目所给数据的模拟过程。可以看出下一轮的第一个数是当前这一轮所删除数字下一个数向前移动m次,所以我们可以通过反推推出剩下的最后一个数在第一轮时的位置,这个位置的下标即为这个数。公式:(当前位置下标+m) % 上一轮数组长度1.在倒数第二轮...原创 2020-03-30 14:31:21 · 170 阅读 · 0 评论 -
leetcode----820. 单词的压缩编码(补题)
题目链接---------------->820. 单词的压缩编码这道题只需要判断一个单词是否被其他单词包含(即是否是其他单词的后缀),因为若其被包含则不用为其添加新的编码,编码长度即为不是其他单词后缀 的单词的长度加上每个单词后面补上的#长度方法:1.我们先将整个字符串数组按长度排序(也可以不排序,先将所有的字符串放入哈希表中即可)2.在将该字符数组加入哈希表...原创 2020-03-29 23:41:05 · 322 阅读 · 0 评论 -
Leetcode---1162. 地图分析
题目链接----------->1162. 地图分析题意大概是找到离陆地最远的海洋区域,返回它离陆地的最近距离。我想到了用bfs来做,但是我想的是把每个陆地节点都走一次BFS,然后跟之前的距离做比较,小的话就更新,算了一下时间复杂度感觉很高过不了,看了题解恍然大悟,太菜了。题解的做法是把所有的陆地节点都放入队列中,只跑一次BFS,最先到达的一定是距离最小的(你细品)。因为把所有陆地节点...原创 2020-03-29 21:44:03 · 269 阅读 · 0 评论 -
leetcode---914. 卡牌分组
题目链接---->914. 卡牌分组统计每个数出现的次数,所有次数的最大公约数大于等于2则为true否则为false。 bool hasGroupsSizeX(vector<int>& deck) { int n = deck.size(); if(n < 2) return false; ...原创 2020-03-27 14:47:53 · 167 阅读 · 0 评论 -
leetcode---999. 车的可用捕获量
今天的题也很简单,感觉这几天leetcode的每日一题有点水…题目链接----->999. 车的可用捕获量方法一:扫描其所在的行和列int numRookCaptures(vector<vector<char>>& board) { int len = board.size(); int i,j,x,y,ans = 0,sum = 0;...原创 2020-03-26 15:20:49 · 163 阅读 · 0 评论 -
leetcode---892. 三维形体的表面积
今天的签到题是比较简单的,我们可先将所有方块的表面积算出来(小方块个数乘6),再减去它们遮住的那部分面积就好了。对于不同柱体之间的遮盖面积,我们每次只要考虑该位置的右边和下边就好了,算法为方块数量较小的柱体的方块数*2。对于柱间遮住的面积为:该柱体(方块数-1)*2。int surfaceArea(vector<vector<int>>& grid) { ...原创 2020-03-25 20:02:45 · 157 阅读 · 0 评论 -
leetcode---面试题 17.16. 按摩师
这道题其实和 leetcode—198.打家劫舍 是一样的,典型的dp问题,dp[i]表示在第 i 个请求到来后的总预约时间。我们对于第 i 个预约请求有两种选择(接和不接),接的话则表示他是从第 i-2 个请求过来的(因为不能接相邻的请求),不接的话其总预约时间不变(和dp[i-1]相同)。所以状态转移方程为dp(i)=max(dp(i−1),dp(i−2)+num(i))dp(i)=max(...原创 2020-03-24 15:06:16 · 271 阅读 · 0 评论 -
Leetcode---876. 链表的中间结点
方法一:遍历两边链表,第一遍统计结点个数,第二遍在中点结点停下,返回指针。ListNode* middleNode(ListNode* head) { int n = 0,i = 0; ListNode *p = head; while(p != NULL) { n++; p = p->next; } n =...原创 2020-03-23 10:42:59 · 150 阅读 · 0 评论 -
leetcode---945. 使数组唯一的最小增量
方法一:暴力,对于数组中的每一个数使其递增到数组里不存在的数为止,每增一次计数加一。int minIncrementForUnique(vector<int>& A) { int vis[90005]={0},cont = 0; for(int i = 0;i < A.size();i++) { vis[A[i]]++; ...原创 2020-03-22 21:59:12 · 388 阅读 · 2 评论 -
leetcode---365.水壶问题
有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1: (From the famous “Die Hard” example)输入: x = 3, y = 5, z ...原创 2020-03-22 15:27:49 · 326 阅读 · 0 评论 -
二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。第一种方法:遍历每个一维数组(当一维数组的第一个元素大于所给整数时则停止),对于每个一维数组进行二分查找。复杂度为O(mlogn)O(mlogn)O(mlogn) bool Find(i...原创 2020-03-20 20:31:47 · 151 阅读 · 0 评论 -
牛客网序列和
题目表述:给出一个正整数N和长度L,找出一段长度大于等于L的连续非负整数,他们的和恰好为N。答案可能有多个,我我们需要找出长度最小的那个。例如 N = 18 L = 2:5 + 6 + 7 = 183 + 4 + 5 + 6 = 18都是满足要求的,但是我们输出更短的 5 6 7输入描述:输入数据包括一行: 两个正整数N(1 ≤ N ≤ 1000000000),L(2 ≤ L ≤ 1...原创 2020-03-19 23:37:23 · 809 阅读 · 0 评论