自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 926. 将字符串翻转到单调递增

基本思路就是:在这个字符串中,存在某一个点,在这个点之前所有的字符均为0,后面的字符均为1,那么我们就可以遍历这个字符串来找到这个点。 首先遍历整个字符串,找到将字符串全部变为“1”所需要的次数One_Num,然后再从头开始遍历字符串,每找到一个‘ 0 ’,那么就将One_Num减一,每找到一个‘ 1 ’就将Zero_Num加一。维持一个Zero_Num+One_Num的最小值。clas...

2019-02-04 18:09:07 253

原创 Leetcode 735. 行星碰撞

基本思路: 很简单。首先来一个辅助数组,最好是用栈,但是返回的结果不是数组么。所以直接用数组吧。      然后这么考虑: 从左往右遍历输入的数组,每遍历到一个值,若它能和辅助数组的最右边的行星发生碰撞,那么就计算一下看这个新来的行星是否会被撞爆,若被撞爆了,那么就遍历下一个。若没有那么就将辅助数组最右边的值弹出(表示最右边的行星被撞爆了),再重复进行上述操作,直到新来的行星被撞爆、或者辅助数组里...

2018-10-16 10:12:54 481

原创 Leetcode 712. 两个字符串的最小ASCII删除和

 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和。示例 1:输入: s1 = "sea", s2 = "eat"输出: 231解释: 在 "sea" 中删除 "s" 并将 "s" 的值(115)加入总和。在 "eat" 中删除 "t" 并将 116 加入总和。结束时,两个字符串相等,115 + 116 = 231

2018-10-12 10:26:57 415

原创 Leetcode 841. 钥匙和房间

 基本思路: 最基本的深度优先遍历算法的应用。class Solution {public: void DFS(int room_Num,vector<vector<int>>& rooms,vector<bool>& HavenOpen){ HavenOpen[room_Num] = true; ...

2018-10-10 14:01:47 213

原创 Leetcode 515. 在每个树行中找最大值

 您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9]基本思路:二叉树的层序遍历而已。用两个数组交替记录每次遍历的结果,并将其最大值保存至结果中。class Solution {public:...

2018-10-08 17:47:10 215

原创 Leetcode 508. 出现次数最多的子树元素和

给出二叉树的根,找出出现次数最多的子树元素和。一个结点的子树元素和定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。然后求出出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的元素(不限顺序)。 示例 1输入: 5 / \2 -3返回 [2, -3, 4],所有的值均只出现一次,以任意顺序返回所有值。示例 2输入:...

2018-10-08 16:31:27 510

原创 Leetcode 513. 找树左下角的值

给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1 示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:基本思路: 翻转二叉树的层序遍历。一个二叉树的层序遍历是每...

2018-10-07 12:14:09 168

原创 leetcode 540. 有序数组中的单一元素

给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。示例 1:输入: [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: [3,3,7,7,10,11,11]输出: 10 基本思路:看到LogN的时间复杂度,必然是二分。 既然是二分,怎么确定那个唯一的数在那边呢? 可以看到若成对的数为偶数,那么Mid 和 哪...

2018-10-06 20:10:34 283

原创 Leetcode 109. 有序链表转换二叉搜索树

 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ ...

2018-10-06 16:50:19 226

原创 Leetcode 797. 所有可能的路径

给一个有 n 个结点的有向无环图,找到所有从 0 到 n-1 的路径并输出(不要求按顺序)二维数组的第 i 个数组中的单元都表示有向图中 i 号结点所能到达的下一些结点(译者注:有向图是有方向的,即规定了a→b你就不能从b→a)空就是没有下一个结点了。示例:输入: [[1,2], [3], [3], []] 输出: [[0,1,3],[0,2,3]] 解释: 图是这样的:0---...

2018-10-04 19:48:53 788

原创 Leetcode 763. 划分字母区间

字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入: S = "ababcbacadefegdehijhklij"输出: [9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一个片段中。像 "ababcb...

2018-10-04 15:58:16 150

原创 Leetcode 452. 用最少数量的箭引爆气球

在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足  xstart ≤ x ≤ xen...

2018-09-25 21:34:24 591

原创 Leetcode 861. 翻转矩阵后的得分

有一个二维矩阵 A 其中每个元素的值为 0 或 1 。移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。返回尽可能高的分数。 示例:输入:[[0,0,1,1],[1,0,1,0],[1,1,0,0]]输出:39解释:转换为...

2018-09-22 22:11:24 141

原创 Leetcode 89. 格雷编码

 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。...

2018-09-19 10:19:53 83

原创 Leetcode 216. 组合总和 III

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。 解集不能包含重复的组合。 示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]] 基本思路:像这...

2018-09-19 09:21:42 270

原创 Leetcode 41. 缺失的第一个正数

 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1 基本思路:首先要明白只能用常数的额外空间,那么就只能操作现有的数组,来完成记录工作了,你问为什么要记录?我记录一些东西,我怎么知道我前面遍...

2018-09-18 11:06:22 96

原创 Leetcode 856. 括号的分数

 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:() 得 1 分。 AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。 (A) 得 2 * A 分,其中 A 是平衡括号字符串。 示例 1:输入: "()"输出: 1示例 2:输入: "(())"输出: 2示例 3:输入: "()()"输出: 2示例 4:输入:...

2018-09-17 20:00:06 362

原创 约瑟夫环问题

在看剑指offer中看到一个问题。面试题45题:圆圈中最后剩下的数字。看书的时候没看懂,随后查找一波,嗯……现在把心得体会写下来。这个问题很简单,只需要大家了解以下三个点,就行了新环和旧环。首先看下图(图片来源https://blog.csdn.net/byn12345/article/details/79487253),10人环表示的是初始的情况,称之为旧环。9人环表示是删除第4个人之后...

2018-09-16 16:58:17 131

原创 Leetcode 767. 重构字符串

 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。示例 1:输入: S = "aab"输出: "aba"示例 2:输入: S = "aaab"输出: ""  基本思路:首先算出每个字符出现的个数,若有一个字符出现超过全字符的一半以上,那么肯定不行。 根据出现的次数大到小,一...

2018-09-14 19:58:45 730

原创 Leetcode 503. 下一个更大元素 II

给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数; 第二...

2018-09-13 16:57:40 420

原创 Leetcode 739. 每日温度

根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请输入 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的都是 [3...

2018-09-13 15:57:09 1477 1

原创 Leetcode 416. 分割等和子集

 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100 数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11]. 示例 2:输入: [1, 2, 3, 5]输出: false解释:...

2018-09-10 16:06:38 393

原创 Leetcode 42. 接雨水

 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6基本思路:首先找到最高...

2018-09-10 09:58:07 87

原创 Leetcode 221. 最大正方形

 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4基本思路:遍历输入的矩阵,设计一个Dp[ i ][ j ]表示矩阵第 i 行和第 j 列位置上的基本信息,这些基本信息是什么呢?基本信息我需要知道在第 i 行 第 j 列的上方有多少...

2018-09-08 23:26:56 255

原创 LeetCode 791. 自定义字符串排序

 基本思路:首先遍历一遍T,将T中每个元素的个数存储在TT中。 再遍历一遍S 将S中 从头到尾的每一个元素  在TT中找打出现对应的次数,将其Push到Res中。并将对应的TT位置置0. 最后在遍历一遍TT,目的是将没在S中出现的字符push到Res中。class Solution {public: string customSortString(string S, stri...

2018-09-07 17:53:27 224

原创 Leetcode 678. 有效的括号字符串

 基本思路:两遍遍历:首先从左向右,找到一个“(”或者“*”,就将其位置存下来,当找到一个“)”时,首先看看有没有“(”,有的话将其的位置从 栈中 弹出,并将其两个的位置保存在一个数组中,方便后面对其删除。若没有“(”,那么就找“*”,有的话将其的位置从 栈中 弹出,并将其两个的位置保存在一个数组中,若没有直接返回 false。 然后将成对的“()”或者“*)”都删除。 再从右向左遍历...

2018-09-02 15:20:21 627

原创 Leetcode 696. 计数二进制子串

基本思路:找到0和1相接的地方,以此为基础向两边扩散。如00110011我们先找到  下标为1 和 2 的地方 此时为 0和1 相接的地方,将结果Res+1;将1-1,2+1发现下标为0的地方等于下标为1的地方,下标为2的地方等于下标为3的地方。那么Res+1;一以此类推即可。AC解:class Solution {public: int countBina...

2018-08-29 15:31:16 307

原创 Leetcode 300. 最长上升子序列

基本思路:用DP[ i ]表示从数组开始到第 i 位结束,最大的上升子序列的长度。 在遍历到数组的第N位的时候,遍历前N-1位,当nums[N]大于nums[ j ] 的时候,将DP[ j ]+1和max的大小。取大的。 最后再所有的max中取最大的即为Res。 时间复杂度。AC解:class Solution {public: int lengthOfLIS(vector&...

2018-08-29 14:35:55 160

原创 Leetcode 341. 扁平化嵌套列表迭代器

基本思路:题目看着很吓人,仔细理解之后就很简单了,NestedInteger类其实就是一个数据结构,他里面只有两种东西,一个是vector<NestedInteger>,和Int。这就很简单了,从头开始遍历nestedList,若是Int直接Push进Res中,若不是,那就递归。函数next和函数hasNext都是基本的东西,就不细说了。下面AC解:AC解:class Nes...

2018-08-28 16:19:37 726

原创 Leetcode 63. 不同路径 II

 基本思路,在用Step_Num[ i ][ j ]表示做到 i 、j这个点有多少种走法,那么Step_Num[ i ][ j ]=Step_Num[ i-1 ][ j ]+Step_Num[ i ][ j-1 ],当然咱们要保证 i-1和j-1要大于0才行,不然就数组越界了。下面是AC解:AC解:class Solution {public: int uniquePathsWith...

2018-08-28 15:22:29 122

原创 Leetcode 647. 回文子串

 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。示例 1:输入: "abc"输出: 3解释: 三个回文子串: "a", "b", "c".示例 2:输入: "aaa"输出: 6说明: 6个回文子串: "a", "a", "a&q

2018-08-27 21:01:01 286

原创 Leetcode 97. 交错字符串

 动归超时解:class Solution {public: bool isInterleave(string s1, string s2, string s3) { if (s3.size() != (s1.size() + s2.size())) return false; return _isInterleave(s1, s2, s3); } bool _isI...

2018-08-27 11:15:06 122

原创 牛客 求和

题目描述输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来输入描述:每个测试输入包含2个整数,n和m输出描述:按每个组合的字典序排列输出,每行输出一种组合 基本思路:假设有一个数m,将m分成 1+(m-1)、2+(m-2)…………m/2+m/2。然后再将(m-1)分为2+(m-3)、3+(m-...

2018-08-26 15:43:15 341

原创 Leetcode 665. 非递减数列

 看似很简单的题目,确实令人头疼。Leetcode 上 16.2%的通过率也着实很低。思路:  当前一个数大于后一个数的时候,那么必然这两个数中有一个数需要移动。那么移动哪个呢?这就需要根据前后文来进行判断了。现在我们理清楚一下思路:假设我们在遍历数组的时候碰到一个nums[i]>nums[i+1]时判断nums[i-1]>nums[i]么?若是的话,直接返回false ...

2018-08-22 22:43:33 262

原创 Leetcode 796. 旋转字符串

 找到在A中遍历B的起始元素,找到了就把A折一下和B记性比较,很简单。AC解class Solution {public: bool rotateString(string A, string B) { if (A.size() == 0 && B.size() == 0) return true; for (int i = 0; i < A....

2018-08-22 20:07:07 253

原创 Leetcode 139. 单词拆分

  暴力破解法:先从wordDict中拿出第一个,去遍历整个s,找到对应的地方后,将s从找到的地方分成两个部分,再进行递归。超时解:class Solution {public: bool IsSame(string S1, string S2) { for (int i = 0; i < S1.size(); i++) { if (S1[i] != S...

2018-08-22 17:12:23 346

原创 Leetcode 402. 移掉K位数字

 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。示例 1 :输入: num = "1432219", k = 3输出: "1219"解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。示例 2 :输入: num =...

2018-08-20 10:58:47 481

原创 牛客网:最大的奇约数

题目描述小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11.现在给出一个N,需要求出 f(1) + f(2) + f(3).......f(N)例如: N = 7 f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1 + ...

2018-08-18 17:33:10 170

原创 Leetcode 84. 柱状图中最大的矩形

暴力穷举法:AC,时间复杂度,时间复杂度也太高了。思路:很简单,两个循环嵌套,把所有能列举的组合全部列举一遍,求其中的最大值即可。class Solution {public: int largestRectangleArea(vector<int>& heights) { return __largestRectangleArea(heights);...

2018-08-14 21:56:26 349

原创 Leetcode 135. 分发糖果

基本思路:1.从左往右遍历,当右边评分的大于左边评分的,将给右边小孩的糖等于左边小孩的糖加一。若不大于,那么右边的小孩就给一个。2.从右往左遍历,当左边的评分大于右边,而且做左边小孩的糖小于等于右边小孩,那么将左边小孩的糖数为右边小孩加一。3.将所有小孩糖数累加即可。  AC解:class Solution {public: int candy(vector<i...

2018-08-14 11:57:20 154

空空如也

空空如也

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

TA关注的人

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