南泽月生
码龄5年
关注
提问 私信
  • 博客:10,343
    动态:4
    10,347
    总访问量
  • 27
    原创
  • 752,826
    排名
  • 2
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2019-10-19
博客简介:

woaichikaoya的博客

查看详细资料
个人成就
  • 获得11次点赞
  • 内容获得9次评论
  • 获得38次收藏
创作历程
  • 24篇
    2021年
  • 3篇
    2020年
成就勋章
TA的专栏
  • 算法/数据结构
    13篇
  • LeetCode
    11篇
  • 小工具
    1篇
  • java
    1篇
  • Android
    1篇
兴趣领域 设置
  • 人工智能
    opencv计算机视觉深度学习神经网络tensorflowpytorch图像处理
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

358人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

并查集 rank排序+路径压缩

有两个优化点:rank排序 记录两个合并的根的rank rank低的合并到rank高的上 这个优化目的是避免树的深度增加路径压缩 parent[p] = parent[parent[p]] 这行代码将该节点指向它父亲节点的父亲节点 可以降低树的深度。public class UnionFind4 { private int[] parent; // parent[i]记录i的父亲节点 private int[] rank; // rank[i]表示以i为根的集合的深度
原创
发布博客 2021.05.16 ·
209 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

差分数组+LeetCode1109

差分数组定义性质及用途1.定义对于一个长度大小为n的数组arr[n] 我们可以建立他的差分数组f[n]。其中f[i] = arr[i] - arr[i-1]。 例如 f[2] = arr[2] - arr[1]。2.性质(1) 可通过差分数组计算arr[i]的值: arr[i] = f[i] + f[i-1] + ... + f[0] 或 arr[i] = f[i] + arr[i-1](2) 计算数组每一项的前缀和: ![在这里插入图片描述](https://img-blog.csdn
原创
发布博客 2021.05.11 ·
294 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

并查集 rank+路径压缩

public class UnionFind5 implements UF { // rank[i]表示以i为根的集合所表示的树的层数 // 在后续的代码中, 我们并不会维护rank的语意, 也就是rank的值在路径压缩的过程中, 有可能不在是树的层数值 // 这也是我们的rank不叫height或者depth的原因, 他只是作为比较的一个标准 private int[] rank; private int[] parent; // parent[i]表示第i个元素
原创
发布博客 2021.05.09 ·
290 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

最大堆 最小堆

最大堆public class MaxHeap <E extends Comparable<E>>{ private Array<E> data; public MaxHeap(int capacity){ data = new Array<>(capacity); } public MaxHeap() { data = new Array<>(); } pu
原创
发布博客 2021.05.06 ·
85 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LeetCode307 使用线段树实现

class NumArray { private class SegmentTree<E>{ private E[] data; private E[] tree; private Merger<E> merge; public SegmentTree(E[] arr, Merger<E> merge) { this.merge = merge; .
原创
发布博客 2021.05.06 ·
79 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线段树 实现 查询和更新

public class SegmentTree<E>{ private E[] data; private E[] tree; private Merger<E> merge; public SegmentTree(E[] arr, Merger<E> merge) { // 融合器 this.merge = merge; data = (E[]) new Object[arr.len
原创
发布博客 2021.05.06 ·
91 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

希尔排序

import java.util.Random;public class ShellSort { private ShellSort() {} public static <E extends Comparable<E>> void Sort(E[] arr) { // 每次希尔排序的间隔 int h = arr.length / 2; while (h >= 1) {
原创
发布博客 2021.05.04 ·
82 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Bubble排序 并进行优化

import java.util.Random;public class BubbleSort { private BubbleSort() {} public static <E extends Comparable<E>> void Sort(E[] arr) { // 每次循环把最大元素放在arr[i]的位置 for (int i = arr.length - 1; i > 0;) { /
原创
发布博客 2021.05.04 ·
93 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

剑指 Offer 09. 用两个栈实现队列

import java.util.Stack;class CQueue { // 模拟队列入 private Stack<Integer> stack1; // 模拟队列出 private Stack<Integer> stack2; public CQueue() { stack1 = new Stack<>(); stack2 = new Stack<>(); }.
原创
发布博客 2021.04.28 ·
73 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

349. 两个数组的交集(集合 / 双指针实现)

两种实现思路第一个思路:将一数组add进不重复集合去重。然后用另一个数组挨个查找包含元素 如果查到就说明是交集 则把这个数记录下来 然后从集合中删掉这个数字。第二个思路:首先将两组数排序 然后使用两个指针去维护这两组数。找到重复的数字后记录下来,然后如果再遇到重复的数字 先判断是否记录过,如果没记录 就记录这个数字。第一种思路清晰 实现简单 但是速度慢第二种略微复杂 但是速度快import java.util.ArrayList;import java.util.Arrays;import.
原创
发布博客 2021.04.25 ·
219 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

使用链表(LinkedList) 二叉搜索树(BST) 实现不重复元素集合(Set)

不重复元素集合Set接口定义如下public interface Set<E> { void add(E e); boolean contains(E e); void remove(E e); int getSize(); boolean isEmpty();}复杂度分析:LinkedListSetimport java.util.ArrayList;public class LinkedListSet <E> impl
原创
发布博客 2021.04.22 ·
219 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LeetCode804 唯一的摩尔斯密码词 使用集合实现

思路:将每个词转换为摩斯密码后 输入进java自带的二叉平衡树集合 自动去重后 输出集合的sizeimport java.util.TreeSet;public class Solution { public int uniqueMorseRepresentations(String[] words) { String[] codes = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-".
原创
发布博客 2021.04.21 ·
86 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LeetCode26 删除有序数组中的重复项

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplicates(num
原创
发布博客 2021.04.20 ·
86 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

BST 递归实现二叉树: 插入 删除 查找

二叉树遍历:前序遍历: 本身 左子树 右子树中序遍历: 左子树 本身 右子树 从小到大排列后续遍历: 左子树 右子树 本身二叉树前驱: 当前节点左子树最大的节点二叉树后继: 当前节点右子树最小的节点import javax.swing.plaf.InsetsUIResource;public class MyBST <E extends Comparable<E>> { private class Node { public E e;
原创
发布博客 2021.04.19 ·
149 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

BinarySearch 及其几个变种

二分查找(递归形式)二分查找(非递归形式)**lower: 找比target小的 最大值lower_floor : 找到target在数组中最小的索引 没有则返回lowerupper_floor: 找到target在数组中最大的索引 没有则返回lowerupper: 找比target大的 最小值upper_Ceil: 找target在数组中最大的索引 如果没有则输出其upper值lower_ceil : 找target在数组中最小的索引 如果没有则输出upper值public class
原创
发布博客 2021.04.15 ·
117 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

LeetCode 1011. 在 D 天内送达包裹的能力

**题目描述:**传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例 1:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:第 1 天:1, 2, 3, 4, 5
原创
发布博客 2021.04.14 ·
170 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

LeetCode875 珂珂吃香蕉

题目描述:珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。思路:使用二分查找法 找出最小速度K 查找边界是 最小吃香蕉速度是1 ,
原创
发布博客 2021.04.14 ·
408 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

剑指offer40 最小的k个数

这个题目最坑的是 这个输入的k是几 那么输出的个数就是几 如果全是重复的 比如[1,1,1,1,1,1,1]如果k=2 那么只能输出[1,1] 题目给的这两个样例完全不能体现这一点啊! 而且第一个样例这个[1,2] [2,1]完全是误导我输出一个有序数列啊 最过分的是 这道题给的错误样例也是一个有序数组啊,但其实根本不需要输出的数组是有序的!只有数字全都有就行了啊 能不能严谨一些啊/** * 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小
原创
发布博客 2021.03.31 ·
87 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LeetCode215 数组中的第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说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-largest-element-in-a
原创
发布博客 2021.03.31 ·
70 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LeetCode75 颜色分类

题目连接:https://leetcode-cn.com/problems/sort-colors/LeetCode75给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:
原创
发布博客 2021.03.31 ·
69 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多