LeetCode
文章平均质量分 61
今天又更博学一点
这个作者很懒,什么都没留下…
展开
-
前缀和数组
前缀和技巧前缀和技巧适用于原始数组不会被修改的情况下,频繁地计算一个索引区间内的元素之和。计算本质:某一段的区间和 = 起点到区间右端点的和(含右端点)- 起点到区间左端点的和(不含左端点)一维前缀和int[] nums;int[] preSum = new int[nums.length + 1]; // Notefor(int i = 0; i < nums.length; i++){ preSum[i+1] = preSum[i] + nums[i];}Note:为减原创 2022-02-09 22:55:47 · 1035 阅读 · 0 评论 -
数据结构专题
链表专题(待更新)栈专题Java中用来表达栈的功能(push/pop/peek),更适用的是使用双端队列接口Deque,并用实现类ArrayDeque/LinkedList来进行初始化。Deque<Integer> stack = new ArrayDeque<>();stack.addFirst(E); // 在ArrayDeque双端队列的末尾插入指定的内容stack.peekFirst(); // 返回ArrayDeque双端队列的第一个元素stack.poll原创 2022-01-05 11:52:51 · 357 阅读 · 0 评论 -
滑动窗口 Sliding Window
滑动窗口将嵌套的循环转换为单循环问题,降低时间复杂度为O(n)识别关键字连续的元素,比如string, subarray, LinkedListmin, max, longest, shortest, key word模板void slidingWindow(String s, String t){ Map<Character, Integer> need = new HashMap<>(); Map<Character, Int原创 2022-01-02 22:55:35 · 254 阅读 · 0 评论 -
三种二分法模板(updated)
三种二分法模板第一种要点:详见另一篇文章二分搜索 Binary Searchclass Solution{ public int search1(int[] nums, int target) { if (nums == null || nums.length == 0){ return -1; } int left = 0, right = nums.length - 1; while (left + 1原创 2021-08-01 19:11:02 · 70 阅读 · 0 评论 -
双指针 Two Pointers
第一类 快慢指针快慢指针主要解决链表问题,两个指针一般都初始化指向链表的头结点,即fast = slow = head。前进时快指针 fast 在前,慢指针 slow 在后。即fast = fast.next.netx ,slow = slow.next。例题LC141题:判定链表中是否包含环。题解:若链表含环,快指针最终会超慢指针一圈,和慢指针相遇,即说明链表含有环。LC142题:返回链表开始入环的第一个节点。题解:当快慢指针第一次相遇时,让其中任一个指针指向头节点,然后让它俩以同速原创 2021-02-01 17:14:13 · 138 阅读 · 0 评论 -
二分搜索 Binary Search
二分法学习笔记原创 2020-03-29 12:04:21 · 259 阅读 · 0 评论