自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 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 126

原创 二进制中1的个数

解法一i&(-i)运算的功能为返回 i 的二进制数表示为1的最低位的权值int NumOf1(int n){ int cnt = 0; for(int i = n; i; i -= i & -i) cnt++; return cnt;}解法二n&(n-1) 位运算可以将 n 的位级表示中最低的那一位 1 设置为 0。不断将 1 设置为 0,直到 n 为 0。时间复杂度:O(M),其中 M 表示 1 的个数。cl

2021-02-28 17:57:26 87

原创 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 105

原创 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 81

原创 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 71

原创 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 161 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 65

原创 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 112

原创 leetcode 38, leetcode 39, leetcode 40

38. 外观数列简单给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1描...

2021-02-01 23:28:52 67

原创 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 117 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 88

原创 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 114

原创 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 78

原创 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 386

原创 leetcode 225 队列实现栈;232 用栈实现队列

225 队列实现栈队列先进先出,栈先进后出。队列实现栈:插入元素的时候直接push进队列,同时记录最后一个入队的元素,此元素就是栈的top元素;队列为空的时候栈即空;比较麻烦的是pop,策略是依次取出队列最后一个元素(需要pop的元素)的元素,然后添加到队列后面,把原来队列最后面的元素放到第一个,然后pop掉;需要注意需要改变top元素的值,改成原来队列的倒数第二个元素#include<iostream>#include<queue>using namespace st

2021-01-24 23:54:13 73

原创 leetcode 14, leetcode 15

14 最长公共前缀(简单)编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"示例 2:输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写.

2021-01-24 23:41:55 100

原创 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 101

原创 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 106

原创 leetcode 9 回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。只比较一半的数就行,这样可以不用考虑溢出的问题,但这种方法最低位不能为0。class Solution {pu.

2021-01-22 23:50:09 70

原创 leetcode 6, leetcode 7, leetcode 8

6.Z字形变换(中等)将一个给定字符串s根据给定的行数numRows,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "PAYPALISHIRING"行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:string convert(strin...

2021-01-21 20:14:35 91

空空如也

空空如也

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

TA关注的人

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