LeetCode
菜鸡的LeetCode
大道不该如此小
出来混都是要还的,万幸我还还得起
展开
-
力扣:791 自定义字符串排序(中等
字符串S和 T 只包含小写字符。在S中,所有字符只会出现一次。S 已经根据某种规则进行了排序。我们要根据S中的字符顺序对T进行排序。更具体地说,如果S中x在y之前出现,那么返回的字符串中x也应出现在y之前。返回任意一种符合条件的字符串T。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/custom-sort-string著作权归...原创 2020-02-24 10:43:02 · 346 阅读 · 0 评论 -
力扣:1269停留在原地的方案数目
感觉应该是dp, 但是一开始只能想到递归处理。class Solution {public: int ans = 0; void dfs(int steps, int direction, int arrLen){ if(steps == 0) { if(direction == 0) ...原创 2020-02-24 10:09:16 · 229 阅读 · 0 评论 -
力扣:1329将矩阵按对角线排序
没有什么特别的难度, 就是特别朴素的排序。主要是边界控制class Solution {public: vector<vector<int>> diagonalSort(vector<vector<int>>& mat) { int r = mat.size(), c = mat[0].size(); for (in...原创 2020-02-23 21:12:41 · 365 阅读 · 0 评论 -
力扣:把数组排成最小的数
面试题45. 把数组排成最小的数输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"//考虑的很多,但是没什么用的本人class Solution {public: static bool cmp(string str1, string str2) { int l...原创 2020-02-23 17:47:54 · 169 阅读 · 0 评论 -
力扣:面试题67. 把字符串转换成整数
写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部...原创 2020-02-13 11:55:28 · 188 阅读 · 0 评论 -
力扣:字符串解码
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入...原创 2019-12-30 22:57:40 · 378 阅读 · 0 评论 -
力扣:寻找数组的中心索引
给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出: 3解释:索引3 (nums[3] =...原创 2019-12-26 17:22:13 · 194 阅读 · 0 评论 -
力扣:非递减序列
一开始求得是逆序对的个数字 后面开始改变策略求的是个数,然后跳过当前的,构建新数组,但是有问题就是你没办法确定需要改的是当前的还是后面的class Solution {public: bool checkPossibility(vector<int>& nums) { int count = 0; int len = num...原创 2019-12-26 14:35:11 · 212 阅读 · 0 评论 -
力扣:活字印刷
你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。示例 1:输入:"AAB"输出:8解释:可能的序列为 "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA"。示例 2:输入:"AAABBC"输出:188来源:力扣(LeetCode)链接:https://leetcode-c...原创 2019-12-16 19:56:37 · 389 阅读 · 0 评论 -
力扣:Dota2·参议院
Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇)Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项: 禁止一名参议员的权利: 参议员可以让另一位参议员在这一轮和随后的几轮中丧失所有的权利。 宣布胜利:...原创 2019-12-10 19:10:51 · 322 阅读 · 0 评论 -
力扣:验证外星词典(我好菜啊
某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。输入:words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvw...原创 2019-11-28 23:57:38 · 201 阅读 · 0 评论 -
力扣:三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],...原创 2019-11-26 22:01:47 · 554 阅读 · 0 评论 -
力扣:最长连续序列
给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为O(n)。示例:输入:[100, 4, 200, 1, 3, 2]输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。算法要求的时间复杂度是O(n),一开始想的是动态规划,然后就是排序,并没有想到用哈希表。排序代码:比较意外,不仅过了而且时间还好。class So...原创 2019-11-26 21:47:00 · 258 阅读 · 0 评论 -
力扣:生成下一个排列
这个代码是纯暴力算法,一开始直接用的Dfs生成的全排列,并且没有考虑重复元素,后面排序一下然后去除重复元素。在排好序的的集合中找到原数组,找出下一个。但是超时了emmmmmclass Solution {public: vector<vector<int>>res; void re(int step, vector<int>arr, vecto...原创 2019-11-25 23:54:06 · 186 阅读 · 0 评论 -
力扣:有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()" 输出 : true以前做过一道类似的括号匹配,原题只涉及一种括号,相对容易处理。看到这道题的第一想法是用三个变量来处理。但是这样就...原创 2019-09-07 18:00:02 · 368 阅读 · 0 评论 -
力扣:最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring//我的第一想法是暴力,然后才是中心...原创 2019-09-02 22:33:19 · 186 阅读 · 0 评论 -
力扣:单词拆分
原地爆炸的样例:"cars"["car","ca","rs"]/* 1. i指针,指向s的位置 2. j指针,指向字典里面的位置 3. 设置一个标志能否找到*/bool wordBreak(string s, vector<string>& wordDict){ int n = s.size(); int i = 0; bool end = fa...原创 2019-09-01 15:37:14 · 326 阅读 · 0 评论 -
力扣:逆波兰表达式
根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9...原创 2019-09-01 12:53:58 · 265 阅读 · 0 评论 -
力扣:最长有效括号
给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-valid-parentheses//暴力法:时间复杂度n^2class Solution ...原创 2019-08-23 18:24:04 · 278 阅读 · 0 评论 -
力扣:使用最小花费爬楼梯
数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从co...原创 2019-08-19 16:28:53 · 365 阅读 · 0 评论 -
力扣:爬楼梯(六种方法
假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。官方:https://leetcode-cn.com/problems/climbing-stairs/1. 暴力法 一开始暴力法我也没想到,其实还是比较容易想到的,递归//这样的话大概率超时,所以可以用记忆化pub...原创 2019-08-19 13:45:46 · 3599 阅读 · 4 评论 -
力扣:买股票的最佳时期(动态规划
一开始的想法就是暴力,后面那个想法又不会优化,就很难受//第一想法就是从两头分别两个哨兵,一个搜索最大的一个搜索最小的//分别记录两个数据的数值和下标//但是这样有一个缺陷就是:要求两个最值在中线的两端 int maxProfit(vector<int>& prices){ int res_max = 0; for (int i = 0; i < p...原创 2019-08-18 20:59:12 · 830 阅读 · 0 评论 -
力扣:最大子序和
//说实话没想到竟然通过了但是心里其实是不太明白的class Solution {public: int maxSubArray(vector<int>& nums) { int re_max = 0; int max = 0; bool flag = true; int flags = nums[0]; for (int i = 0; i ...原创 2019-08-18 15:17:34 · 225 阅读 · 0 评论 -
二进制求和
三个版本//class Solution {public: string addBinary(string a, string b) { string res=""; a.length() > b.length() ? res += a : res += b; for (int i = a.length() - 1, j = b.length() - 1; i &...原创 2019-08-14 14:22:53 · 112 阅读 · 0 评论 -
力扣:最大无重复字串(滑动窗口算法
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters...原创 2019-08-11 17:30:44 · 1255 阅读 · 0 评论 -
力扣:最小路径和
给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。int minPathSum(vector<vector<int>>& grid) { //用dfs写 in...原创 2019-08-10 23:07:36 · 402 阅读 · 0 评论 -
力扣:电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].大致思路(三个版本1. 第一想法是检索数字种类数目,然后输出 但是有的点没想到,有可能出现单独...原创 2019-08-09 10:35:41 · 432 阅读 · 0 评论 -
力扣:括号生成问题
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/generate-parentheses...原创 2019-08-08 19:08:36 · 1242 阅读 · 0 评论 -
力扣:简单的数字反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse...原创 2019-08-08 15:01:49 · 319 阅读 · 0 评论 -
力扣:简单的数字回文
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: trueclass Solution {public: bool isPalindrome(int x) { if (x < 0) //这里有很多可以排除的(x % 10 == 0 &&am...原创 2019-08-07 22:29:08 · 243 阅读 · 0 评论 -
剑指offer第一题:Lk-数组
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) { //检...原创 2019-07-23 22:20:09 · 131 阅读 · 0 评论 -
最短路径-啊哈算法笔记-P148
一共介绍了四种算法只有五行的算法 单源最短路 解决负权边 负边权-优化处理Floyd-Warshall-只有五行的算法 算法思想:在不允许经过额外点的情况下,两点的最短路径就是两点间的路径长度。然后加入中间的点之后发生变化。判断e[i][j]与e[i][1]+e[1][j]的大小即可,这是插入一个中间点。感觉和矩阵的乘法是一样的道理,有空可以搞一搞#in...原创 2019-07-19 23:44:41 · 260 阅读 · 0 评论 -
日期排序
/*日期排序:年月日三段的优先级思路;普通年分来说位数是确定的,加权到同一个输入的格式是确定的,但是不确定个数正则表达式划分字符串,千万大小的数据*/#include<iostream>#include<cmath>#include<regex> //正则表达式的库函数#include<string>using na...原创 2019-07-10 22:53:24 · 342 阅读 · 0 评论 -
蓝桥杯官网题目:ip判断
蓝桥杯官网题目题目:在基于Internet的程序中,我们常常需要判断一个IP字符串的合法性。合法的IP是这样的形式:A.B.C.D其中A、B、C、D均为位于[0, 255]中的整数。为了简单起见,我们规定这四个整数中不允许有前导零存在,如001这种情况。现在,请你来完成这个判断程序吧^_^解题思路:把字符串一分为四,分别用Convert()函数进行转换,转换成相应的数字。...原创 2019-06-23 22:31:56 · 1236 阅读 · 0 评论