leetcode
文章平均质量分 61
旺旺000
这个作者很懒,什么都没留下…
展开
-
LRU算法
146. LRU 缓存机制 需要用到哈希表和双向链表 struct DLinkedNode{ int key, value; DLinkedNode* prev; DLinkedNode* next; DLinkedNode(): key(0), value(0), prev(nullptr), next(nullptr) {} DLinkedNode(int _key, int _value): key(_key), value(_value), prev(n转载 2021-03-02 16:04:25 · 116 阅读 · 0 评论 -
leetcode 63, leetcode 64, leetcode 66, leetcode 67
63. 不同路径 II中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 网格中的障碍物和空位置分别用1和0来表示。 class Solution { public: int uniquePathsWithObstacles(vector<vector<i...原创 2021-02-08 23:03:06 · 99 阅读 · 0 评论 -
leetcode 58,leetcode 61, leetcode 62
58. 最后一个单词的长度简单 给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s = "Hello World" 输出:5 示例 2: 输入:s = " " 输出:0 “a ”这种情况下,a就是最后一个单词。 class Solution { public: int lengthOfLastWord(string s)...原创 2021-02-07 22:52:11 · 74 阅读 · 0 评论 -
leetcode 54,leetcode 56, leetcode 57
54. 螺旋矩阵 给你一个m行n列的矩阵matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。 设定每一圈的顶点值,顺时针打印。 class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> res; if(matrix.empty()) r...原创 2021-02-06 22:56:11 · 62 阅读 · 0 评论 -
leetcode 48, leetcode 49, leetocde 50
48. 旋转图像中等 给定一个 n×n 的二维矩阵matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 class Solution { public: void rotate(vector<vector<int>>& matrix) { // 水平翻转 for(int i = 0; i < matrix.s...原创 2021-02-04 22:59:43 · 152 阅读 · 1 评论 -
leetcode 41, leetcode 42,leetcode 43
41. 缺失的第一个正数 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗? 示例 1: 输入:nums = [1,2,0] 输出:3 时间复杂度:O(N),其中N 是数组的长度。空间复杂度:O(1)。 class Solution { public: int firstMissingPositive(vector<int>& nums) { ..原创 2021-02-03 21:50:55 · 58 阅读 · 0 评论 -
leetcode 46 全排列, leetocde 47, leetcode 51 N皇后
46. 全排列(中等) 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 用vis标记是否访问过的状态。 class Solution { public: vector<vector<int>> results; vector<int> res...原创 2021-02-02 21:10:13 · 101 阅读 · 0 评论 -
leetcode 38, leetcode 39, leetcode 40
38. 外观数列简单 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 第一项是数字 1 描...原创 2021-02-01 23:28:52 · 60 阅读 · 0 评论 -
leetcode 34 , leetcode 35,leetcode36
34. 在排序数组中查找元素的第一个和最后一个位置(中等) 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回[-1, -1]。 进阶: 你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗? 示例 1: 输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4] 示例2: 输入:nums = [5,7,7,8,8,10], ...原创 2021-01-29 13:32:10 · 109 阅读 · 1 评论 -
leetcode 28, leetcode 31, leetcode 33
28. 实现 strStr()(简单) 实现strStr()函数。 给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。 示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2 说明: 当needle是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当needle是空字符串时我们应...原创 2021-01-28 22:34:54 · 79 阅读 · 0 评论 -
leetcode 22, leetcode 24, leetcode 25
22. 括号生成(中等) 数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 提示: 1 <= n <= 8 递归 class Solution { public: vector<string> ans; vector<string> generateParenthes.原创 2021-01-27 21:57:55 · 106 阅读 · 0 评论 -
leetcode 19,leetcode 20, leetcode 21
19. 删除链表的倒数第 N 个结点(中等) 给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。 进阶:用一遍扫描实现 提示: 链表中结点的数目为sz 1 <= sz <= 30 0 <= Node.val <= 100 1 <= n <= sz 快慢指针,快指针先走n步,然后快慢一起走,直到快指针走到最后,要注意的是可能是要删除头节点,这个时候可以直接返回head -> next /** * Definition for s...原创 2021-01-26 21:19:57 · 73 阅读 · 0 评论 -
leetcode 16, leetcode 17, leetcode 18
16 最接近的三数之和 给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。 示例: 输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。 提示: 3 <= nums.length <= 10^3 -10^3<= nums[i]<=...原创 2021-01-25 23:06:58 · 378 阅读 · 0 评论 -
leetcode 225 队列实现栈;232 用栈实现队列
225 队列实现栈 队列先进先出,栈先进后出。队列实现栈:插入元素的时候直接push进队列,同时记录最后一个入队的元素,此元素就是栈的top元素;队列为空的时候栈即空;比较麻烦的是pop,策略是依次取出队列最后一个元素(需要pop的元素)的元素,然后添加到队列后面,把原来队列最后面的元素放到第一个,然后pop掉;需要注意需要改变top元素的值,改成原来队列的倒数第二个元素 #include<iostream> #include<queue> using namespace st原创 2021-01-24 23:54:13 · 64 阅读 · 0 评论 -
leetcode 14, leetcode 15
14 最长公共前缀(简单) 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。 示例 1: 输入:strs = ["flower","flow","flight"] 输出:"fl" 示例 2: 输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。 提示: 0 <= strs.length <= 200 0 <= strs[i].length <= 200 strs[i] 仅由小写.原创 2021-01-24 23:41:55 · 94 阅读 · 0 评论 -
leetcode 26, leetcode 27,leetcode 283
26. 删除排序数组中的重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 双指针应用,left指针指向下一个数据保存的位置,right指向遍历的位置,如果right 指针指向的数字跟left一样,则跳过,否则将数字保存到left位置 #include<iostream> #include<vector> using原创 2021-01-23 22:36:50 · 92 阅读 · 0 评论 -
leetcode 11, leetcode 12, leetcode 13
11.盛最多水的容器(中等) 示例 1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。 双指针方法,每次移动的是高度最小的指针。 class Solution { public: int maxArea(vector<int>& height) { int res = 0, area = 0; ..原创 2021-01-23 22:28:11 · 97 阅读 · 0 评论 -
leetcode 9 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 只比较一半的数就行,这样可以不用考虑溢出的问题,但这种方法最低位不能为0。 class Solution { pu.原创 2021-01-22 23:50:09 · 65 阅读 · 0 评论 -
leetcode 6, leetcode 7, leetcode 8
6.Z字形变换(中等) 将一个给定字符串s根据给定的行数numRows,以从上往下、从左到右进行Z 字形排列。 比如输入字符串为 "PAYPALISHIRING"行数为 3 时,排列如下: P A H N A P L S I I G Y I R 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。 请你实现这个将字符串进行指定行数变换的函数: string convert(strin...原创 2021-01-21 20:14:35 · 84 阅读 · 0 评论