![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
南泽月生
这个作者很懒,什么都没留下…
展开
-
差分数组+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 14:50:35 · 259 阅读 · 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 11:17:47 · 66 阅读 · 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 16:40:19 · 131 阅读 · 0 评论 -
LeetCode875 珂珂吃香蕉
题目描述:珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。思路:使用二分查找法 找出最小速度K 查找边界是 最小吃香蕉速度是1 ,原创 2021-04-14 15:19:46 · 381 阅读 · 0 评论 -
剑指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 22:22:52 · 73 阅读 · 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 21:01:11 · 59 阅读 · 0 评论 -
LeetCode 剑指51 用归并排序求逆序对个数
求逆序对个数/**逆序对问题 leetCode 剑指51在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。输入: [7,5,6,4]输出: 5思路: 在归并排序的过程中就能得到逆序对个数 如果在合并数组的过程中 右数组当前的数字小于 左数组当前的数字那么左数组从当前的数字 一直到结束 都与右数组形成逆序对例如 [7,5,6,4]在叶子节点合并后为可得逆序对:[7,5] [6,4]然后[5,7] [4,6]原创 2021-03-23 16:54:11 · 163 阅读 · 0 评论 -
LeetCode26 删除有序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplicates(num原创 2021-04-20 09:47:50 · 65 阅读 · 0 评论 -
349. 两个数组的交集(集合 / 双指针实现)
两种实现思路第一个思路:将一数组add进不重复集合去重。然后用另一个数组挨个查找包含元素 如果查到就说明是交集 则把这个数记录下来 然后从集合中删掉这个数字。第二个思路:首先将两组数排序 然后使用两个指针去维护这两组数。找到重复的数字后记录下来,然后如果再遇到重复的数字 先判断是否记录过,如果没记录 就记录这个数字。第一种思路清晰 实现简单 但是速度慢第二种略微复杂 但是速度快import java.util.ArrayList;import java.util.Arrays;import.原创 2021-04-25 17:06:49 · 204 阅读 · 0 评论 -
LeetCode804 唯一的摩尔斯密码词 使用集合实现
思路:将每个词转换为摩斯密码后 输入进java自带的二叉平衡树集合 自动去重后 输出集合的sizeimport java.util.TreeSet;public class Solution { public int uniqueMorseRepresentations(String[] words) { String[] codes = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-".原创 2021-04-21 16:41:35 · 71 阅读 · 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 08:30:38 · 60 阅读 · 0 评论