
codetop solution
文章平均质量分 85
在codetop网站上的题目及其面试变形题的各种解法
ruidajin
这个作者很懒,什么都没留下…
展开
-
高频11. 买卖股票的最佳时机 及其变形题的各种解法 Java codetop
前言股票问题一共有六道题,链接如下:121. 买卖股票的最佳时机122. 买卖股票的最佳时机 II123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV309. 最佳买卖股票时机含冷冻期714. 买卖股票的最佳时机含手续费每个问题都有优质的题解,但是大多数题解没有建立起这些问题之间的联系,也没有给出股票问题系列的通解。这篇文章给出适用于全部股票问题的通解,以及对于每个特定问题的特解。一、通用情况这个想法基于如下问题:给定一个表示每天股票价格的数组,什么因素决定了可以获得的转载 2022-04-12 12:10:40 · 157 阅读 · 0 评论 -
高频11. 二叉树的层序遍历 之形遍历 及其变形题的各种解法 Java codetop
题目描述二叉树的层序遍历给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]各种解法1. 递归实现import java.util.*; class Solution { public List<L原创 2022-04-11 22:37:01 · 724 阅读 · 0 评论 -
高频10. 最大子数组和 及其变形题的各种解法 Java codetop 字节变体 美团变体
题目描述最大子数组和给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23各种解法1. 动态规划解题思路动态规划的 f(i) 表原创 2022-04-10 23:43:42 · 788 阅读 · 0 评论 -
高频9. 合并两个有序链表 合并k个有序链表 去重 链表升序降序未知 及其变形题的各种解法 Java codetop
目录题目描述各种解法1. 递归合并两个链表解题思路2. 迭代合并两个链表解题思路变形题1. 合并两个有序链表并且没有重复值,考虑去重1.1 递归去重合并解题思路1.2 迭代去重合并解题思路2. 合并k个有序链表2.1 两两合并的方式顺序合并解题思路2.2 分治合并解题思路2.3 优先队列合并解题思路3. 链表虽然是有序顺序未知(不确定是升序还是降序),指定生成升序或者降序解题思路题目描述合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示原创 2022-04-09 12:38:15 · 1459 阅读 · 0 评论 -
高频8. 数组排序 手撕十大排序算法及时空复杂度,稳定性分析,重点快排 堆排序 归并排序 Java codetop
目录题目描述各种解法1. 冒泡排序2. 快速排序3. 插入排序4. 希尔排序5. 选择排序6. 堆排序7. 归并排序8. 计数排序9. 桶排序10. 基数排序基数排序 vs 计数排序 vs 桶排序排序算法复杂度及稳定性各排序算法适用的情况题目描述排序数组给你一个整数数组 nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 1:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]各种解法比较排原创 2022-04-08 13:10:05 · 633 阅读 · 0 评论 -
高频7. 三数之和 及其变形题的各种解法 Java codetop 递归 两数之和 n数之和
目录题目描述各种解法1. 排序+双指针+两次去重解题思路变形题1.两数之和1.1 排好序的,双指针1.2 未排序的,HashMap一次遍历解题思路2. nSum问题题目描述三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]原创 2022-04-07 10:26:13 · 900 阅读 · 0 评论 -
高频6. K 个一组翻转链表 及其变形题的各种解法 Java codetop 递归
题目描述K 个一组翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例1:输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]示例2:输入:head = [1,2,3,4,5], k = 3原创 2022-04-06 10:35:38 · 207 阅读 · 0 评论 -
高频5. 数组中的第K个最大元素 及其变形题的各种解法 Java codetop
题目描述数组中的第K个最大元素给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4各种解法快排class Solution { Random random = new Random(); public int f原创 2022-04-05 21:13:22 · 1265 阅读 · 0 评论 -
高频4. 最长递增子序列 及其变形题的各种解法 Java codetop
题目描述最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例2:输入:nums = [0,1,0,3,2,3]输出:4示例3:输入:nums原创 2022-04-04 13:13:10 · 848 阅读 · 0 评论 -
高频3. LRU缓存实现 及其变形题的各种解法 Java codetop
题目描述LRU缓存请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value原创 2022-04-03 19:48:14 · 752 阅读 · 0 评论 -
高频2. 无重复字符的最长子串 及其变形题的各种解法 Java codetop
题目描述无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是原创 2022-04-02 17:09:30 · 1663 阅读 · 0 评论 -
高频1. 反转链表 及其变形题的各种解法 Java
题目描述反转链表题目链接给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 2:输入:head = []输出:[]各种解法递归解法class Solution { public ListNode reverseList(ListNode head) { // 递归解法 if(原创 2022-04-01 11:32:09 · 942 阅读 · 0 评论