力扣刷题
文章平均质量分 58
刷题线:代码随想录
语言:JAVA
简介:尽量一题多解
ChenJieYaYa
这个作者很懒,什么都没留下…
展开
-
[力扣]回溯2
回溯法解决切割问题 回溯法解决子集问题 回溯法解决排列问题 回溯法解决棋盘问题 代码随想录[原文指路] 切割问题 1.分割回文串[131] class Solution { List<List<String>> ress = new ArrayList<List<String>>(); List<String> res = new ArrayList<String>(); public List<..原创 2022-05-27 22:01:12 · 69 阅读 · 0 评论 -
[力扣]回溯1—基础+组合
回溯法解决组合问题 代码随想录[原文指路] 概述 回溯函数也是递归函数 1.回溯算法效率 回溯法不是高效算法 本质是穷举所有可能性 2.回溯解决的问题 组合问题:N个数里面按某规则找出k个数的集合 切割问题:字符串按某规则有几种切割方式 子集问题:N个数的集合里有多少符合条件的子集 排列问题:N个数按某规则全排列,有几种排列方式 棋盘问题:N皇后,解数独等等 3.回溯模板 所有回溯问题可抽象成树 回溯法一般是在集合中递归搜索 集合大小构成树宽度,递归深度构成树深度 模板 public..原创 2022-05-14 11:26:15 · 86 阅读 · 0 评论 -
[力扣]二叉树5—总结
代码随想录[原文指路]原创 2022-05-10 23:03:21 · 304 阅读 · 0 评论 -
[力扣]二叉树4—二叉搜索树
代码随想录[原文指路]原创 2022-05-04 20:56:35 · 273 阅读 · 0 评论 -
[力扣]二叉树3—属性操作
代码随想录[原文指路]原创 2022-05-02 10:01:49 · 468 阅读 · 0 评论 -
[力扣]二叉树2—构造二叉树
代码随想录[原文指路] 1.翻转二叉树[226] 解题前先确定使用什么遍历顺序 /** - 前后序,层序遍历都可,此处只给出前序遍历 - 中序不行,因为先左孩子交换孩子,再根交换孩子(做完后,右孩子已经变成了原来的左孩子),再右孩子交换孩子(此时其实是对原来的左孩子做交换) */ class Solution { public TreeNode invertTree(TreeNode root) { if(root==null) return root;原创 2022-04-30 12:00:58 · 488 阅读 · 0 评论 -
[力扣]二叉树1—基础+遍历
代码随想录[原文指路] 概述 1.种类 满二叉树:二叉树只有度(子节点个数)为0与2的节点,且度为0的节点在同一层 完全二叉树:底层以上全被填满,底层节点从左向右连续(集中于左边) 二叉搜索树(二叉排序树) 满二叉树与完全二叉树没有数值的概念,而二叉搜索树有 1.若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值 2.若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值 3.它的左、右子树也分别为二叉排序树 平衡二叉搜索树(AVL):空树或左右两子树高度差绝对值不超过1,并且原创 2022-04-28 21:35:55 · 850 阅读 · 0 评论 -
[力扣]栈与队列
概述 用栈实现队列[232] 用队列实现栈[225] 有效的括号[20] 删除字符串中的所有相邻重复项[1047] 逆波兰表达式求值[150] 滑动窗口最大值[239] 前 K 个高频元素[347] 总结原创 2022-04-24 20:31:11 · 167 阅读 · 0 评论 -
[力扣]双指针
三数之和[15] 四数之和[18]原创 2022-04-21 10:32:06 · 94 阅读 · 0 评论 -
[力扣]字符串
反转字符串[344] 反转字符串 II[541] 替换空格[剑指 Offer 05] 颠倒字符串中的单词[151] 左旋转字符串[剑指 Offer 58 - II] 实现 strStr()[28] 重复的子字符串[459]原创 2022-04-20 22:10:07 · 176 阅读 · 0 评论 -
[力扣]哈希表
概述 1.概述 哈希法牺牲空间换时间 2.作用 快速判断元素是否出现集合里 判断元素是否出现过 3.哈希函数 通过hashCod计算某对象哈希值 该哈希值作为该对象在哈希表中的索引 以便快速找到该对象 4.哈希碰撞 两不同对象计算出的哈希值相同,即索引位置相同 5.解决哈希碰撞 拉链法 线性探测法 6.常见的哈希结构 数组 集合 Map 有效的字母异位词[242] 已知为小写字母,定义一个26位大小的数组存对应字母出现次数 循环s时用+,循环t时用-,最终元素全为0则返回tru原创 2022-04-18 15:34:59 · 120 阅读 · 0 评论 -
[力扣]链表
概述 1.概念 不一定连续存储空间 以节点的方式存储 每个节点包含data,next 2.类型 单链表(data,next) 双链表(pre,data,next) 循环链表(尾节点next指向head) 3.存储方式 存储空间不连续 4.操作 删除节点 添加节点 5.总结 链表主要动笔画出链表间前后节点的关系 只有最后一题需要数学思想,其他就基本操作 移除链表元素[203] class Solution { public ListNode removeElements(Li原创 2022-04-17 20:33:25 · 132 阅读 · 0 评论 -
[力扣]数组
概述 连续存储空间,存相同类型数据的集合 C++中二维数组地址是连续的 二分查找 1.二分查找[704] 前提:数组元素有序且不重复 时间复杂度:O(logn) 注意 left与right边界取值情况 2.搜索插入位置[35] 分析 暴力解法 时间复杂度:O(n) ------------------------ class Solution { public int searchInsert(int[] nums, int target) { for(int i=0原创 2022-04-05 19:14:19 · 210 阅读 · 0 评论 -
[力扣]刷题开始
线性结构 1.线性结构 概念 1.有序数据与元素的集合 2.数据与元素间存在一一对应的线性关系 存储方式 1.顺序存储:内存连续 2.链式存储:内存不连续 常见线性结构 数据、链表、队列、栈 2.非线性结构 常见非线性结构 多维数据、广义表、树、图 时间复杂度 概念:估算运行时间的函数 O:一般情况运行时间的上界 化简 留最高词,去系数 常见时间复杂度 O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(原创 2022-04-01 16:36:36 · 142 阅读 · 0 评论