
leetcode
文章平均质量分 65
hxf_fxh
这个作者很懒,什么都没留下…
展开
-
【算法】动态规划系列
参考资料labuladong 的算法小抄代码随想录动态规划的基本特征:求最值重复子问题最优子结构动态规划的基本步骤:确定状态确定选择确定动态转移方程定义dp数组,确定初始化的值确定base case确定遍历顺序动态规划的技巧:状态压缩例题322. 零钱兑换给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以原创 2021-11-12 16:05:28 · 330 阅读 · 0 评论 -
【算法】并查集
参考资料算法的关键点有 3 个:1、用 parent 数组记录每个节点的父节点,相当于指向父节点的指针,所以 parent 数组内实际存储着一个森林(若干棵多叉树)。2、用 size 数组记录着每棵树的重量,目的是让 union 后树依然拥有平衡性,而不会退化成链表,影响操作效率。3、在 find 函数中进行路径压缩,保证任意树的高度保持在常数,使得 union 和 connected API 时间复杂度为 O(1)。class UF { // 连通分量个数,也就是独立的树的个数原创 2021-11-11 11:33:27 · 370 阅读 · 0 评论 -
【算法】排序算法
参考资料复习基础排序算法(Java)快速排序import java.util.Random;class Solution { private static final Random RANDOM = new Random(); public int[] sortArray(int[] nums) { quickSort(nums,0,nums.length-1); return nums; } public void quickSort原创 2021-11-05 17:56:47 · 98 阅读 · 0 评论 -
用数组实现队列
用数组实现队列package array;import java.util.Arrays;public class ArrayQueue<E> { Object[] element; int size; int head; int tail; int capacity;// 初始容量 int maxCapacity;// 最大容量 public ArrayQueue(int capacity, int maxCapacity)原创 2021-10-21 14:48:21 · 105 阅读 · 0 评论 -
【LeetCode题解】单调队列、单调栈系列
算法单调队列:「单调队列」的核心思路和「单调栈」类似。单调队列的 push 方法依然在队尾添加元素,但是要把前面比新元素小的元素都删掉:例题239. 滑动窗口最大值239. 滑动窗口最大值给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解原创 2021-09-26 17:42:28 · 413 阅读 · 0 评论 -
【LeetCode题解】组合、子集、排列问题
背景组合、子集、排列问题都是经典的回溯算法,有共同的特点但是也有不一样的实现细节,这篇文章总结自己刷题过程中的经验。总结如果数组中没有重复元素子集、组合问题使用start指针,每一次搜索从start指针后的元素开始搜索,保证不要选取重复的元素。排列问题使用visit数组,对自身进行标记,每一次搜索从头开始搜索,但是不要选取自身。如果数组中含有重复元素这里注意对同一层搜索进行去重,有两种方法。使用哈希表记录当前层有哪些元素,如果搜索当前层的过程中遇到重复元素,跳过这次搜索。首先对数组进行排原创 2021-09-24 15:11:31 · 385 阅读 · 0 评论 -
【LeetCode题解】链表系列
文章目录LeetCode 206 反转链表LeetCode 92 反转链表IILeetCode 25 K 个一组翻转链表LeetCode 206 反转链表LeetCode 92 反转链表IILeetCode 25 K 个一组翻转链表原创 2021-09-22 17:40:48 · 95 阅读 · 0 评论 -
【LeetCode题解】栈系类
题目描述leetCode-725给定一个整数数组 asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。示例 1:输入:asteroids = [5,10,-5]输出:[5,10]解释:10 和 -5 碰撞后只剩下原创 2021-09-18 11:58:12 · 93 阅读 · 0 评论