目录 题目 思路 代码 复杂度分析 题目 146. LRU缓存机制 思路 利用双链表和HashMap来解题 看到链表题目,我们可以使用头尾结点可以更好进行链表操作和边界判断等 还需要使用size变量来存储双链表的当前长度 调用get,如果存在的话,我们可以调用将在双链表中的结点通过修改指针移动到第一个:如果调用put,我们先判断是否存在该结点,如果不存在,可直接将链接插入即可,同时size++,如果存在的话,先删除原来的结点,再将新结点push到头部即可 代码 class LRUCache {…
https://www.cnblogs.com/grandyang/p/7404777.html 博客中写的<=2,实际上<=1也是可以的 相当于判断一个大指针内所有子字符串是否可能为回文 class Solution { public: int countSubstrings(string s) { int length = s.size(); ; vector<vector<,vector<,false)); ;i <= length;i++){ ;j <=…
Views 表:+---------------+---------+| Column Name   | Type    |+---------------+---------+| article_id    | int     || author_id     | int     || viewer_id     | int     || view_date     | date    |+---------------+---------+此表无主键,因此可能会存在重复行.此表的每一行都表示…
如果一个正方形矩阵满足下述 全部 条件,则称之为一个 X 矩阵 :    矩阵对角线上的所有元素都 不是 0    矩阵中所有其他元素都是 0给你一个大小为 n x n 的二维整数数组 grid ,表示一个正方形矩阵.如果 grid 是一个 X 矩阵 ,返回 true :否则,返回 false .示例 1:输入:grid = [[2,0,0,1],[0,3,1,0],[0,5,2,0],[4,0,0,2]]输出:true解释:矩阵如上图所示.X 矩阵应该满足:绿色元素(对角线上)都不是 0 ,红…
给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列  ,请你从数组中找出满足相加之和等于目标数 target 的两个数.如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length .以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2.你可以假设每个输入 只对应唯一的答案 ,而且你…
活动表 Activity: +--------------+---------+| Column Name  | Type    |+--------------+---------+| player_id    | int     || device_id    | int     || event_date   | date    || games_played | int     |+--------------+---------+表的主键是 (player_id, event_date…
如果一个密码满足以下所有条件,我们称它是一个 强 密码:    它有至少 8 个字符.    至少包含 一个小写英文 字母.    至少包含 一个大写英文 字母.    至少包含 一个数字 .    至少包含 一个特殊字符 .特殊字符为:"!@#$%^&*()-+" 中的一个.    它 不 包含 2 个连续相同的字符(比方说 "aab" 不符合该条件,但是 "aba" 符合该条件).给你一个字符串 password ,如果它是一个 强 …
一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格.比方说,"Hello World" ,"HELLO" ,"hello world hello world" 都是句子.每个单词都 只 包含大写和小写英文字母.如果两个句子 sentence1 和 sentence2 ,可以通过往其中一个句子插入一个任意的句子(可以是空句子)而得到另一个句子,那么我们称这两个句子是 相似的 .比方说,sentence1 = "H…
给定一个长度为 n 的 0 索引整数数组 nums.初始位置为 nums[0].每个元素 nums[i] 表示从索引 i 向前跳转的最大长度.换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:    0 <= j <= nums[i]     i + j < n返回到达 nums[n - 1] 的最小跳跃次数.生成的测试用例可以到达 nums[n - 1].示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳…
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 .给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额.示例 1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相…