![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Leetcode题解
Leetcode Java、C++解法
NewsomTech
知之非艰,行之惟艰。
展开
-
【Leetcode-146】LRU缓存机制(C++实现)
题解1 需求分析2 实现代码1 需求分析需求:①O(1)时间访问任意key → 哈希表(unordered_map)②O(1)时间删除LRU缓存中的键值对 → list③O(1)时间向LRU缓存的头部增加/移动键值对 → list(不能使用vector,O(n)时间)思路:外层数据结构:hashtable,存储键值对的键,值维护指向链表中元素的指针内存数据结构:双向链表,支持O(1)时间插入/删除/移动操作注:应尽量使用STL自带的容器/数据结构。2 实现代码#include &原创 2021-03-19 22:32:21 · 251 阅读 · 0 评论 -
【Leetcode-026】删除排序数组中的重复项(Java && C++实现)
题解1 双指针-快慢指针(Java实现)2 双指针-快慢指针(C++实现)-待更新1 双指针-快慢指针(Java实现)/* 方法:双指针-快慢指针 难度:简单 思路:要求不使用额外空间(在原数组中操作) 使用快慢指针依次比较两指针元素: 相同时,仅继续移动快指针; 不同时,先移动慢指针,并使用快指针元素赋值;再继续移动快指针。 时间复杂度:O(n) 空间复杂度:O(1) 类似题目原创 2021-02-14 21:20:12 · 101 阅读 · 0 评论 -
【Leetcode-022】括号生成(Java && C++实现)
题解1 回溯法(Java实现)2 回溯法(C++实现)-待更新1 回溯法(Java实现)/* 方法:回溯搜索算法 + 括号组合的性质 难度:中等 思路:括号组合问题的性质: (1)对于合法的括号组合,左括号数量【必等于】右括号数量 (2)对于合法的括号组合的任意子串,左括号数量【应大于等于】右括号数量 时间复杂度: 空间复杂度: 类似题目:t020-有效的括号*/import java.util.ArrayL原创 2021-02-14 21:17:36 · 117 阅读 · 2 评论 -
【Leetcode-020】有效的括号(Java && C++实现)
题解1 栈-括号匹配(Java实现)2 栈-括号匹配(C++实现)-待更新1 栈-括号匹配(Java实现)/* 方法:栈-括号匹配 难度:简单 思路:使用栈对各类型括号进行匹配 当前字符为左括号:入栈 当前字符为右括号:判断当前栈是否为空,且当前右括号是否与栈顶元素括号匹配 时间复杂度:O(n) 空间复杂度:O(n)*/import java.util.Scanner;import java.util.St原创 2021-02-14 21:14:20 · 87 阅读 · 0 评论 -
【Leetcode-018】四数之和(Java && C++实现)
题解1 数组排序+双指针+递归(Java实现)2 拓展:N数之和1 数组排序+双指针+递归(Java实现)/* 方法:数组排序 + 双指针 + 递归调用 难度:中等 思路:从二数之和扩展到三数之和,再扩展到四数之和 对排序后的数组进行遍历时(第1个数),第2、3、4个数调用已有的三数之和API 遍历过程需保证第1个数不能出现重复(第2、3、4个数已控制不会出现重复结果) 时间复杂度:O(n^3) 数组排序O(原创 2021-02-14 21:09:46 · 241 阅读 · 4 评论 -
【Leetcode-017】电话号码的字母组合(Java && C++实现)
题解1 回溯算法(Java实现)2 回溯算法(C++实现)-待更新1 回溯算法(Java实现)/* 方法:回溯搜索算法 + HashMap/一维数组 映射 难度:中等 思路:使用回溯算法遍历决策树,穷举所有解,决策树的每个节点维护当前已选路径track/path和选择列表等信息。 本题中,电话号码digits确定了各个数字的出现顺序(每个数字对应不同字母)。对电话号码每个数字的可能字母进行穷举组合。 使用HashMap或一维数组,存储数字原创 2021-02-14 21:04:52 · 171 阅读 · 3 评论 -
【Leetcode-015】三数之和(Java && C++实现)
题解1 数组排序+双指针+递归调用(Java实现)1 数组排序+双指针+递归调用(Java实现)/* 方法:数组排序 + 双指针 + 递归调用 难度:中等 思路:从二数之和扩展到三数之和 对排序后的数组进行遍历时(第1个数),第2个数和第3个数调用已有的二数之和API 遍历过程需保证第1个数不能出现重复(第2、3个数已控制不会出现重复结果) 时间复杂度:O(n * n) 数组排序O(n logn)原创 2021-02-14 20:59:45 · 134 阅读 · 0 评论 -
【Leetcode-005】最长回文子串(Java && C++实现)
题解1 双指针(Java实现)2 动态规划(Java实现)3 双指针(C++实现)-待更新4 动态规划(C++实现)-待更新1 双指针(Java实现)解法1:双指针-左右指针(Java实现)/* 方法2:双指针-左右指针 思路:使用双指针(左右指针)的方法判断回文字符串,可同时解决回文串长度为奇数和偶数的情况 通过遍历原字符串的各个索引(作为回文串的中心节点-向两边扩散),调用回文字符串函数,求解最大值 时间复杂度:O(n * n) 空间复杂度:O原创 2021-02-14 20:56:25 · 151 阅读 · 0 评论 -
【Leetcode-003】无重复字符的最长子串(Java && C++实现)
/* 方法1:滑动窗口-HashMap实现 难度:中等 思路:维护一个滑动窗口及窗口中的字符技计数器window(HashMap或数组) (1)初始化:窗口的左右指针left和right,以及记录最大长度的变量maxLen (2)移动right指针、不断扩大窗口 → 更新window计数器 (3)(当移入窗口的字符的出现次数大于1时,收缩窗口) 移动left指针、不断缩小窗口,直至当前移入窗口的原创 2021-02-14 20:49:34 · 88 阅读 · 0 评论