随笔分类 -  算法

记录自己的刷题思路,刷题路线及复盘学习参考公众号:代码随想录
摘要:206.翻转链表 题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 提示: 链 阅读全文
posted @ 2022-03-01 10:00 rananie 阅读(38) 评论(0) 推荐(0) 编辑
摘要:31.下一个排序 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果 阅读全文
posted @ 2022-02-28 23:49 rananie 阅读(204) 评论(0) 推荐(0) 编辑
摘要:32.最长有效括号 题目 给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 1: 输入:s = "(()" 输出:2 解释:最长有效括号子串是 "()" 示例 2: 输入:s = ")()())" 输出:4 解释:最长有效括号子串是 "()()" 示 阅读全文
posted @ 2022-02-27 20:10 rananie 阅读(35) 评论(0) 推荐(0) 编辑
摘要:33.搜索旋转排序数组 题目 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 ⇐ k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], 阅读全文
posted @ 2022-02-26 19:09 rananie 阅读(30) 评论(0) 推荐(0) 编辑
摘要:129.求根节点到叶节点数字之和 题目 给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字: 例如,从根节点到叶节点的路径 1 → 2 → 3 表示数字 123 。 计算从根节点到叶节点生成的 所有数字之和 。 叶节点 是 阅读全文
posted @ 2022-02-21 10:14 rananie 阅读(82) 评论(0) 推荐(0) 编辑
摘要:15.三数之和 题目 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1: 输入:nums = [-1,0,1,2,-1,-4] 输出 阅读全文
posted @ 2022-02-20 10:20 rananie 阅读(19) 评论(0) 推荐(0) 编辑
摘要:236.二叉树的最近公共祖先 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 1: 输入:root 阅读全文
posted @ 2022-02-19 15:22 rananie 阅读(43) 评论(0) 推荐(0) 编辑
摘要:NC127最长公共子串 题目 描述 给定两个字符串str1和str2,输出两个字符串的最长公共子串 题目保证str1和str2的最长公共子串存在且唯一。 要求: 空间复杂度 O(n2) 时间复杂度 O(n2) 示例1 输入: "1AB2345CD","12345EF" 返回值: "2345" 备注: 阅读全文
posted @ 2022-02-18 11:12 rananie 阅读(71) 评论(0) 推荐(0) 编辑
摘要:20.有效的括号 题目 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例 1: 输入:s = "()" 输出:true 示例 2: 输入:s = "()[] 阅读全文
posted @ 2022-02-06 12:05 rananie 阅读(27) 评论(0) 推荐(0) 编辑
摘要:NC41.最长无重复子数组 题目 给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。 子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组 数据范围: 0≤arr.length≤105 0 阅读全文
posted @ 2022-01-25 18:35 rananie 阅读(138) 评论(0) 推荐(0) 编辑
摘要:232.用栈实现队列 题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 阅读全文
posted @ 2022-01-13 11:00 rananie 阅读(28) 评论(0) 推荐(0) 编辑
摘要:1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums 阅读全文
posted @ 2022-01-08 11:20 rananie 阅读(131) 评论(0) 推荐(0) 编辑
摘要:102.二叉树的层序遍历 题目 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层序遍历结果: [ [3], [9,20], [15,7] ] 阅读全文
posted @ 2022-01-07 23:35 rananie 阅读(26) 评论(0) 推荐(0) 编辑
摘要:215. 数组中的第K个最大元素 题目 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2 阅读全文
posted @ 2022-01-07 21:14 rananie 阅读(67) 评论(0) 推荐(0) 编辑
摘要:最小的K个数 题目 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2 输出:[1,2] 或者 [2,1] 示例 2: 输入:arr = [0,1,2,1 阅读全文
posted @ 2022-01-04 10:08 rananie 阅读(41) 评论(0) 推荐(0) 编辑
摘要:NC45 实现二叉树先序、中序和后序遍历 题目 描述 给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。 数据范围:0 ≤ n ≤1000,树上每个节点的val值满足 0≤val≤100 要求:空间复杂度 O(n),时间复杂度 O(n) 样例解释: 如图二叉树结构 示例1 输入: {1, 阅读全文
posted @ 2022-01-03 14:44 rananie 阅读(133) 评论(0) 推荐(0) 编辑
摘要:146.LRU(Least Recently Used)缓存 题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(in 阅读全文
posted @ 2022-01-03 10:26 rananie 阅读(44) 评论(0) 推荐(0) 编辑
摘要:排序算法 排序的分类 按主要操作分类 比较排序:用比较的方法 插入排序:直接插入排序、折半插入排序、希尔排序 交换排序:冒泡排序、快速排序 选择排序:简单选择排序、堆排序 归并排序:2-路归并排序 基数排序:不比较元素大小,仅仅根据元素本身的取值确定其有序位置 按辅助空间分类 原地排序:辅助空间用量 阅读全文
posted @ 2021-12-28 18:21 rananie 阅读(97) 评论(0) 推荐(0) 编辑
摘要:912.排序数组 题目 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 提示: 1 ⇐ nums.length ⇐ 5 * 阅读全文
posted @ 2021-12-24 16:31 rananie 阅读(40) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 62. 圆圈中最后剩下的数字 题目 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的 阅读全文
posted @ 2021-12-23 20:49 rananie 阅读(23) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示