leetcode
mark_GJ
这个作者很懒,什么都没留下…
展开
-
leetcode-每日一题:242. 有效的字母异位词
题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。这题看到后首先想到是用字典把一个字符串的每个字母都统计出来,然后在对另一个进行遍历统计个数-1,如果出现次数为负数则false,否则为true。这题能这么干的原因是边界限定了字符串要一样长,所以比包含关系简单。基于上面的思路,用桶排序的方法实现。好了,我们看代码:python:class Solution(object): def isAnagram(self, s, t): """原创 2020-11-22 15:05:46 · 149 阅读 · 0 评论 -
leetcode-每日一题:406. 根据身高重建队列
题目是:406. 根据身高重建队列题解:这题比较骚的是思路,想得到思路就没什么难题。题目给了我们两个信息,1 身高 2 比当前身高大的个数,所以怎么利用参数呢?第一步:按身高降序,身高相同,按个数升序——目的是让高个子看不到挨个子;第二部:将上面结果,按个数插入,正好就是我们要得结果。不bb了,看代码:python:class Solution(object): def reconstructQueue(self, people): """ :type p原创 2020-11-17 22:24:40 · 250 阅读 · 2 评论 -
leetcode - 每日一题并查集
给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:“a==b” 或 “a!=b”。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/satisfiability-of-equality-equations著...原创 2020-06-09 23:40:26 · 379 阅读 · 0 评论 -
leetcode -每日一题
最长连续序列给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。本题:暂时没想到满足时间复杂度的要求,暂时的思路就是暴力法:以每个数进行左右查找,得到最长连续序列class Solution {public: int longestConsecutive(vector<int>& nums) { .原创 2020-06-06 22:50:06 · 275 阅读 · 1 评论 -
leetcode每日一题2020-06-02
题目:求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路:本题中等题,关键是这个终止条件怎么设置,因为没有了条件语句可以用,本题参考大神的写法用了短路的思想实现了递归。class Solution {public: int res = 0; int sumNums(int n) { // 想到用递归,但是没有if用怎么写终止条件呢?参考了大神的写法,用了短路的思路原创 2020-06-02 22:43:01 · 147 阅读 · 0 评论 -
leetcode刷题前300经典-29
整数除法,注意的就是越界问题;越界建议参考:https://blog.csdn.net/mark_GJ/article/details/105851138 这种写法。class Solution {public: int divide(int dividend, int divisor) { if (dividend == -2147483648 && divisor == -1) { return pow(2,31) - 1;原创 2020-06-02 22:26:34 · 185 阅读 · 0 评论 -
leetcode前300经典刷题 - 26
删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。思路:本题采用了 双指针以换位置的方式虚拟删除重复元素,本题可以这样做的原因是只需要返回结果长度。class Solution {public: int removeDuplicates(vector<int>& nums) { //.原创 2020-05-26 22:13:00 · 188 阅读 · 0 评论 -
leetcode前300经典刷题-22
括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。思路:这题首先想到的是dfs,但是没想到怎么做,参考了答案end condition:右大于左,右越界,左越界学习:vector不像python的可变变量,以值拷贝传入时,等于是深度拷贝,想要函数内外一起变采用引用传参。class Solution {public: void Helper(vector<string> &res, string cur, int.原创 2020-05-24 22:21:46 · 192 阅读 · 0 评论 -
leetcode前300经典刷题 - 21
21 合并链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:本题就采用暴力法,从头开始遍历两个原创 2020-05-22 22:33:32 · 255 阅读 · 0 评论 -
leetcode 前300经典刷题-20
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:就是暴力法遇到“({[” 就添加, 遇到 “)}] ” 就匹配,能匹配就删除原创 2020-05-21 23:37:35 · 324 阅读 · 0 评论 -
leetcode-前300经典刷题-19
删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。.原创 2020-05-20 22:14:47 · 761 阅读 · 0 评论 -
leetcode -前300经典-17
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/4sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。本题偷懒就采用了三数和的解法。class Solution原创 2020-05-18 23:30:23 · 153 阅读 · 0 评论 -
leetcode-前300经典刷题-17(C++)
17 字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。本题的思路递归法拆解成2个字母class Solution {public: // 记录数字和字母的对应关系 unordered_map<char, string> m = {{'2', "abc"}, {'3', "def"}, {'4', "ghi"}, {'5', "jkl"}, {'6', "mno"}, {'7'原创 2020-05-17 23:57:20 · 206 阅读 · 0 评论 -
leetcode-刷题-242(C++)
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。本题的第一思路就是采用字典,分别统计两个字符串每个字符出现的次数,如果是异构的则最后字典的所有个数为0class Solution {public: bool isAnagram(string s, string t) { // 本题的思路采用map unordered_map<char, int> m; for (auto c: s) {原创 2020-05-11 23:03:06 · 224 阅读 · 0 评论 -
leetcode-刷题-1122(C++)
1122 给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/relative-sort-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。本题:相对排序原创 2020-05-11 22:43:46 · 261 阅读 · 0 评论 -
leetcode-刷题-(与刷题经典15的博客题目类似)(C++)
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/compress-string-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。本题简单点,因为本题可以新建地址,不用在原地址上修改。思路同原创 2020-05-10 23:49:06 · 278 阅读 · 0 评论 -
leetcode-刷题-892(C++)
在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/surface-area-of-3d-shapes著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:我采用了暴力法+求表面积class Solution {public:原创 2020-05-10 21:00:48 · 174 阅读 · 0 评论 -
leetcode-前500经典刷题-15(C++)
压缩字符串给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/string-compression著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路采用双指针,一个表示读,一个表示写。class Solution {public:原创 2020-05-10 19:01:30 · 247 阅读 · 0 评论 -
leetcode-面试题刷题-Tree-4(C++)
上下翻转二叉树:给定一个二叉树,其中所有的右节点要么是具有兄弟节点(拥有相同父节点的左节点)的叶节点,要么为空,将此二叉树上下翻转并将它变成一棵树, 原来的右节点将转换成左叶节点。返回新的根。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-upside-down著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。本题的题目不太容易理解这题我参考了解题思路:变换规律/** * Definition fo原创 2020-05-08 22:53:55 · 375 阅读 · 0 评论 -
leetcode-前300经典刷题-16(C++)
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum-closest著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。本题对比15的简单之处在于不用去重,不用考虑special input,思路类似排序+双指针class Solution原创 2020-05-08 21:58:50 · 215 阅读 · 0 评论 -
leetcode-面试题刷题-Tree-3(C++)
注意对比:这题 https://blog.csdn.net/mark_GJ/article/details/105982763上面这题是每个节点到每个叶子的路径本题是一个节点到左边的最大路径+这个节点到右边路径的和。题目:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。/** * Definition f...原创 2020-05-07 23:27:27 · 206 阅读 · 0 评论 -
leetcode-面试题刷题-Tree-2(C++)
从根到叶的二进制数之和给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。思路:本题其实是考察前序遍历/** * Definition for a binary tree node. * stru...原创 2020-05-07 22:37:23 · 214 阅读 · 0 评论 -
leetcode-面试题刷题-Tree-1(C++)
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。思路:二叉树尝试用递归,分类是前,中,后序哪个的应用/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * ...原创 2020-05-07 22:27:42 · 198 阅读 · 0 评论 -
leetcode-面试题刷题-Tree(C++)
实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。本题类似于求树的深度,注意定义是每个节点/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *righ...原创 2020-05-07 22:01:33 · 281 阅读 · 0 评论 -
leetcode-前300经典刷题-15(C++)
题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。本...原创 2020-05-06 23:37:51 · 216 阅读 · 0 评论 -
leetcode-前300经典刷题-14(C++)
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。思路:本题的思路我采用的是两两对比找到最后的公共前缀链接:C++:string的常见操作http://c.biancheng.net/view/400.html解题:class Solution {public: string longestCommonPrefixBetweenT...原创 2020-05-05 10:06:25 · 207 阅读 · 0 评论 -
leetcode-前300经典刷题-6(C++)
盛最多水的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。本题看似无从下手,实际就是求面积最大class Solution {public...原创 2020-04-30 00:07:14 · 135 阅读 · 0 评论 -
leetcode-前300经典刷题-5(C++)
判断一个整数是不是回文数:思路就是将整数倒叙判断是否相等,注意点就是overflow,仍然采用-4-0提到的方法class Solution {public: bool isPalindrome(int x) { if (x < 0) { return false; } int re = 0; i...原创 2020-04-29 23:08:08 · 218 阅读 · 0 评论 -
leetcode-前300经典刷题-4-0(C++)
C++中整数溢出怎么处理:思路比较上一周期class Solution {public: int reverse(int x) { int res = 0; // c的a%b =k,k符号与a一致,python与b一致 int left; while (x) { left = x % 10; ...原创 2020-04-29 00:09:08 · 153 阅读 · 0 评论 -
leetcode-前300经典刷题-4(C++)
字符串转整数这里我们主要需要考虑的就是内存越界问题,对于内存越界我们基本的思路就是将比较往前提一个周期。class Solution {public:int myAtoi(string str) {int res = 0;int left;int flag = 1;int i = 0;//去除空格for(i;i<str.length();i++) {if(str[i...原创 2020-04-29 00:07:32 · 224 阅读 · 0 评论 -
leetcode-前300经典刷题-3(C++)
题目:3. 无重复字符的最长子串示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。// 题目3int lengthOfLongestSubstring(string s){ // 记录sting:index map<char, int> m; // res int res = 0; int sta...原创 2020-04-25 23:34:04 · 223 阅读 · 0 评论 -
leetcode-前300经典刷题-2(C++)
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2020-04-24 23:00:33 · 173 阅读 · 0 评论 -
leetcode-前300经典刷题-1(C++)
两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(Le...原创 2020-04-24 22:04:20 · 294 阅读 · 0 评论 -
leetcode-dp-4
题目:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买入, 卖出...原创 2020-04-22 23:25:04 · 128 阅读 · 0 评论 -
leetcode-dp-3
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。思路:本题思路为将(0,N)分解为(0,i)中(0,j)+i的每个i的最大子序列class Solution {public: int lengthOfLIS(vector<int&g...原创 2020-04-22 00:07:35 · 128 阅读 · 0 评论 -
leetcode-DP-2
题目:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.思路:利用dp将n之前的所有结果都求出来并保存。d[n]=min(d[n],d[n-j*j...原创 2020-04-21 23:37:49 · 154 阅读 · 0 评论 -
leetcode-刷题记录20200411-DP
DP-最长回文子序列题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。算法解析:1 暴力法:基于字符串每一位往两边找到最长回文字符串python:class Solution: def longestPalindrome(self, s: str) -> str: #暴力法,从i位开始向两边找,找到最长回文子序列...原创 2020-04-11 23:00:25 · 113 阅读 · 0 评论 -
leetcode刷题记录
工作之余刷刷题排解下寂寞-1面试题66. 构建乘积数组:https://leetcode-cn.com/problems/gou-jian-cheng-ji-shu-zu-lcof/解题思路:题目要求可以简化为求数组中任意一个元素左右两边所有元素的乘积。(偷懒就用了一个套路,练习了p/c/c++)python:class Solution: def constructArr(sel...原创 2020-02-26 21:58:43 · 128 阅读 · 0 评论