leetcode
在这里写题
fang0jun
这个作者很懒,什么都没留下…
展开
-
leetcode(38): 检查字符串是否可以通过排序子字符串得到另一个字符串
class Solution {public: bool isTransformable(string s, string t) { int n = s.size(); vector<queue<int>> pos(10); for (int i = 0; i < n; ++i) { pos[s[i] - '0'].push(i); } for (int i = .原创 2020-12-04 11:01:41 · 237 阅读 · 0 评论 -
leetcode(37): 拆除炸弹
class Solution {public: int sgn(int k) {return k > 0 ? 1: -1;} vector<int> decrypt(vector<int>& code, int k) { int n = code.size(); vector<int> ans; for(int i = 0; i < n; i++){ if(k.原创 2020-12-04 10:49:28 · 184 阅读 · 0 评论 -
leetcode双周赛(1): 设计前中后队列
class FrontMiddleBackQueue {public: int arr[1050]; int len = 0; FrontMiddleBackQueue() { len = 0; } // 添加两个移动功能,方便调用 // 后移需要从后往前操作数组,前移需要从前往后操作数组 void moveBack(int x){if(len < x) return ; for(int i = len; i>.原创 2020-12-01 23:36:38 · 165 阅读 · 0 评论 -
leetcode双周赛(1)-合并两个链表
设置两个指针分别移动到指定结点,再进行操作/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *nex.原创 2020-11-29 20:46:41 · 254 阅读 · 0 评论 -
leetcode双周赛(1)-最大重复子字符串
暴力匹配, 单指针操作class Solution {public: int maxRepeating(string sequence, string word) { int n = sequence.size(), m = word.length(); int ans = 0,cur = 0; for(int i = 0; i < n; i++){ cur = -1; .原创 2020-11-29 20:29:02 · 126 阅读 · 0 评论 -
leetcode(35, 36): 转置矩阵、主要元素
题目描述class Solution {public: vector<vector<int>> transpose(vector<vector<int>>& A) { int row = A.size(); int col = A[0].size(); vector<vector<int>> temp(col, vector<int>(r原创 2020-11-27 00:13:18 · 108 阅读 · 0 评论 -
leetcode(34): 子矩形查询
题目描述:class SubrectangleQueries {private: vector<vector<int>> rectangle; vector<vector<int>> history;public: SubrectangleQueries(vector<vector<int>>& rectangle) : rectangle(rectangle) {} void u原创 2020-11-25 20:41:18 · 101 阅读 · 0 评论 -
leetcode(34): 判断平衡二叉树
文章目录题目描述法一:自顶向下的递归 O(n^2)法二:自底向上的递归 O(n)总结//经典leetcode简单题。。。题目描述法一:自顶向下的递归 O(n^2)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), r原创 2020-10-08 09:13:05 · 134 阅读 · 0 评论 -
leetcode(33): 相同的树(回溯)
文章目录题目描述法一:dfs题目描述法一:dfs/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(n原创 2020-10-06 11:09:51 · 76 阅读 · 0 评论 -
leetcode(32): 组合总和(回溯)
文章目录题目描述法一:dfs题目描述法一:dfsclass Solution {public: void dfs(vector<int>& candidates, int target, vector<vector<int>>& ans, vector<int>& combine, int idx) { if (idx == candidates.size()) { retur原创 2020-10-06 10:43:47 · 120 阅读 · 0 评论 -
leetcode(31): 最长公共前缀
文章目录题目描述法一: substr法二:题目描述法一: substrclass Solution {public: int strStr(string haystack, string needle) { int end = haystack.size(); int size = needle.size(); string s; for(int i = 0; i < end - size + 1; i++){原创 2020-10-05 22:13:23 · 96 阅读 · 0 评论 -
leetcode(30): 四数之和
文章目录题目描述法一:常规的多指针总结:题目描述法一:常规的多指针class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { int size = nums.size(); vector<vector<int>> res; sort(nums.begin(),nums原创 2020-09-13 11:07:57 · 80 阅读 · 0 评论 -
leetcode(29): 三数之和
文章目录题目描述法一:常规的双指针总结:题目描述法一:常规的双指针class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { int size = nums.size(); vector<vector<int>> reses; sort(nums.begin(), nums.end());原创 2020-09-13 10:37:44 · 81 阅读 · 0 评论 -
leetcode(28): 字符串转换整数(实现atoi)
文章目录题目描述法一:确定有限自动状态机(DFA)总结:|| 相关知识的复习跳转链接 —> Engineering a Compiler读书笔记(2):词法分析器题目描述法一:确定有限自动状态机(DFA)class Automaton { string state = "start"; unordered_map<string, vector<string>> table = { {"start", {"start", "sig原创 2020-09-12 15:39:31 · 99 阅读 · 0 评论 -
leetcode(27): 字符串乘法
文章目录法一:竖式乘法的实现(各个位数先相乘后将乘数相加)法一:竖式乘法的实现(各个位数先相乘后将乘数相加)class Solution {public: string addStrings(string num1, string num2) { //if(num1 == "0" || nums == "0") return (num1 == "0") ? num2 : num1; int size1 = num1.size(); int s原创 2020-09-09 15:36:14 · 102 阅读 · 0 评论 -
leetcode(26): 字符串相加
文章目录法一:短的跳过,直接相加法二:短的补零,壹壹对应相加总结:法一:短的跳过,直接相加class Solution {public: string addStrings(string num1, string num2) { //if(num1 == "0" || nums == "0") return (num1 == "0") ? num2 : num1; int size1 = num1.size(); int size2 = num原创 2020-09-09 15:35:21 · 87 阅读 · 0 评论 -
leetcode(25): 零矩阵
文章目录法一:总结:法一:class Solution {public: void clear(int x, int y, vector<vector<int>> & map){ for(int i = 0; i < map[x].size(); i++){ map[x][i] = 0; } for(int i = 0; i < map.size(); i++){原创 2020-09-09 15:24:09 · 83 阅读 · 0 评论 -
leetcode(24): 单词频率
法一:hash表class WordsFrequency {private: unordered_map<string, int> hash;public: WordsFrequency(vector<string>& book) { for(int i = 0; i < book.size(); i++){ hash[book[i]]++; } } int g.原创 2020-08-28 09:22:47 · 177 阅读 · 0 评论 -
leetcode(23): 复杂链表的复制
文章目录法一:使用unordered_map法二:使用递归总结:法一:使用unordered_map/*// Definition for a Node.class Node {public: int val; Node* next; Node* random; Node(int _val) { val = _val; next = NULL; random = NULL; }};*/cl..原创 2020-08-25 11:01:06 · 179 阅读 · 0 评论 -
leetcode(22): 找到所有数组中消失的数字
法一:类似hash类似哈希表的构造,但是不使用hashclass Solution {public:vector<int> findDisappearedNumbers(vector<int>& nums) { int n = nums.size(); if(n<=1) return {}; vector<int> res; for(int i = 0;i<n;++i){ .原创 2020-08-24 08:58:10 · 190 阅读 · 0 评论 -
leetcode(21): 二维数组中的查找
文章目录法一: 双指针总结:法一: 双指针class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if(matrix.size()==0 || matrix[0].size() == 0) return false; int m = matrix.size(), n = matrix.原创 2020-08-17 13:19:35 · 160 阅读 · 0 评论 -
leetcode(20): 顺时针打印矩阵
文章目录|| 法一:辅助矩阵与方向数组|| 法二:定位遍历总结|| 法一:辅助矩阵与方向数组class Solution {private: static constexpr int directions[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};public: vector<int> spiralOrder(vector<vector<int>>& matrix) { if(matrix.size().原创 2020-08-06 21:17:41 · 355 阅读 · 0 评论 -
leetcode一周汇总(1)
本周心得vector中,字符串的sort()排序问题(按顺序以字母表比较,前一位优先级高:abc < acb < bca)数组中的排序sort问题:(sort函数作用范围为 [begin, end) ,不包含最后一位 )静态数组:int a[10] = { 9, 0, 1, 2, 3, 7, 4, 5, 8, 6 }; sort(a, a +10);(注意加的是长度,加到数组末尾的下一位)vector: sort(heights.begin(), heights.end()原创 2020-06-22 08:45:31 · 308 阅读 · 0 评论 -
leetcode(19): 第三大的数
写在前面:哈希表的构造:在数组某位置与放入同该位置下标相同的数字即可题目描述:给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。vect...原创 2020-04-28 10:31:01 · 134 阅读 · 0 评论 -
leetcode(18): 合并有序数组
题目描述:给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15]...原创 2020-04-21 11:04:22 · 155 阅读 · 0 评论 -
leetcode(17): 移动零
写在前面:1,vector是不可以像数组(arr = {1,2,11,6,2,4} )那样的显示构造的。若想显示构造,需要另外构造一个数组辅助。eg : int nums[6] = { 1, 3, 0, 4, 2, 0}; vector<int> arr(nums, nums+6);题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持...原创 2020-04-20 10:54:36 · 130 阅读 · 0 评论 -
leetcode(16): 动态规划(4)
写在前面:1,使用dp找关系式时如果f有两个自变量,那么有两种方向: 1,使用二维数组,二维dp将结果存放在dp中 2,构建一个双参数的函数,直接返回目标值(不用构建二维数组)2,由1引申一下:dp找关系式时如果f有一个自变量: 1,使用一维数组,一维dp将结果存放在dp中 2,构建一个单参数的函数,直接返回目标值 3,只使用一个变量 通过与之关联的变量进行操作↑↑↑↑↑↑↑↑↑↑...原创 2020-03-18 11:42:21 · 218 阅读 · 0 评论 -
leetcode(15): 动态规划(3)
写在前面:对于dp的关系式的推导有两个杀手锏: 1,确定自变量x,函数f(x)的实际意义 2,边界情况来推导。题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,...原创 2020-03-17 15:33:17 · 861 阅读 · 0 评论 -
leetcode(12): 动态规划2
写在前面:题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。走一波递归 — 超出时限//确定函数功能:根据剩余的阶梯数x返回其可能走法数//确定尾头: 尾:当剩余1阶台阶时只有1种走法。当剩余2阶台阶是只有两种解法 头:有走一步/走两步两种情况,分别获得对应走法数...原创 2020-03-17 11:29:00 · 222 阅读 · 0 评论 -
leetcode题解 - 数组(5)
写在前面1,c++中可以通过下标的变换实现类似python的切片功能2,c++中的理论最小/大值:INT_MIN / INT_MAX3,类似寻找最大最小值的题目,初始值一定要定义成理论上的最小最大值4,寻找最大值的基操:确定初始值,遍历+max函数 (刷题的时候还是尽量使用封装好了的函数吧)题目描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个...原创 2020-03-16 12:01:40 · 197 阅读 · 0 评论 -
leetcode(10): 搜索插入位置
写在前面:1,用STL的话确实很香... 本题可以用到的STL: lower_bound() // 最底界题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组 中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。class Solution {public: int searchInsert(vector<in...原创 2020-03-15 17:38:06 · 148 阅读 · 0 评论 -
leetcode(9): 移除数组元素
写在前面:1,逻辑性强的长代码一般细节完善,思维性强的短代码一定一定要留意好细节(代码短,有时会照顾不到细节)2,自增指针大法! --- 指针中运用自增符,可以让代码又秀又简洁3,双指针运行效率一般都很好很好题目描述:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外...原创 2020-03-15 15:51:12 · 273 阅读 · 0 评论 -
leetcode(8): 删除排序数组中的重复项
写在前面:1,写出来一个很隐秘的bug,for循环里的跳出条件为 i<arr.size(); 然而在for循环循环体中却对arr调用了push_back()2,c++数组报错内存不足常见的错误:内存越界访问 / 返回指向临时变量的指针题目描述:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原...原创 2020-03-15 14:28:23 · 165 阅读 · 0 评论 -
leetcode(7): 和为s的两个数字
写在前面1,vector的初始化方式: 1,默认构造(0参数,一参数,两参数) vector<int> arr / vector<int> arr(10) / vector<int> arr(10, 1) 2,拷贝构造(一参数,两参数) vector<int> arr(arr2) / vector<int> arr(arr2.b...原创 2020-03-15 03:32:39 · 142 阅读 · 0 评论 -
leetcode(6): (SQL)
题一(SQL):给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。解题思路一:使用case when / then else解题思路二:天秀!A...原创 2020-02-25 20:05:03 · 332 阅读 · 0 评论 -
leetcode(5): (SQL)
|| 写在前面要说今天刷题收获的话:1 就是不要提前去看答案,顺着自己的思路多摸索摸索,逻辑链会一点点完善最后通畅退一步说,如果实在不会后看了没人的思路,就千万不要看别人的代码!再退一步说,如果看了别人的代码,就千万别只看一半!要看完!2 还有一些 常用操作的补充:》处理表:辅助表,内外联结和自联结》基操:删除自联结的表时delete后需要加上一个副表名,ifnull()函数,is ...原创 2020-02-24 17:43:34 · 244 阅读 · 0 评论 -
leetcode(4): (SQL)
第一题:题目描述:编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述 Employee 表,SQL查询应该返回 200 作为第二...原创 2020-02-19 20:28:50 · 163 阅读 · 0 评论 -
leetcode(3): 最长公共前缀
题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。来源:力扣(LeetCode)思路:水平扫描法...原创 2020-01-22 22:10:16 · 180 阅读 · 0 评论 -
leetcode(2): 旋转数组
原地翻转一个数组 三次旋转法 题目描述:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]来源:力扣(LeetCode)c/c++...原创 2020-01-21 23:51:15 · 285 阅读 · 0 评论 -
leetcode(1): 有效的括号
题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:1 左括号必须用相同类型的右括号闭合。2 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。来源:力扣(LeetCode)思路:明显用栈解决。考虑到代码简洁性1,我们使用数组栈(避免实现链栈中push,pop方法)2,由于只有一个例程,数组栈...原创 2020-01-20 10:33:18 · 1546 阅读 · 0 评论