随笔分类 -  刷题技巧

总结自己算法刷题技巧
摘要:题目描述 思路:前缀/后缀乘积数组 构造除自身以外数组的左边前缀乘积 构造除自身以外数组的右边后缀乘积 然后对应位置相乘 方法一: class Solution { public int[] productExceptSelf(int[] nums) { int n = nums.length; / 阅读全文
posted @ 2024-01-14 17:34 Ac_c0mpany丶 阅读(42) 评论(0) 推荐(0)
摘要:一、前缀和的作用 前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。 二、前缀和的思路 将原始数组进行预处理,将来需要查询数据的时候,只需要查询预处理的前缀和数组的某些值即可。 前缀和的求解是【动态规划】。 三、前缀和的定义 四、前缀和数组的构造 //int[] nums = {3, 5, 阅读全文
posted @ 2024-01-14 16:38 Ac_c0mpany丶 阅读(63) 评论(0) 推荐(0)
摘要:栈主要考察单调栈,队列主要考察优先队列(堆)。 栈和队列(ArrayDeque) 数据结构 ArrayDeque类是双端队列Deque接口的实现类。 Deque的含义是"double ended queue",即双端队列,它既可以当作栈使用,性能优于Stack,也可以当作队列使用,性能优于Linke 阅读全文
posted @ 2023-12-24 15:55 Ac_c0mpany丶 阅读(60) 评论(0) 推荐(0)
摘要:二分搜索(binary search)算法 二分搜索算法,又名二分查找算法。 常用的使用场景:寻找一个数字、寻找左侧边界、寻找右侧边界 二分搜索模板 先介绍下二分搜索模板,后面的二分搜索都是基于这个二分搜索模板的 int binarySearch(int[] nums, int targer) { 阅读全文
posted @ 2023-12-21 15:14 Ac_c0mpany丶 阅读(80) 评论(0) 推荐(0)
摘要:1. 堆 一、堆的引入 现在我们想专门设计一种数据结构,用来存放整数,要求提供3个接口: 添加元素 获取最大值(或最小值) 删除最大值(或最小值) 有一种最优的数据结构就是堆。 时间复杂度:获取最大值的:O(1)、删除最大值O(log n)、添加元素O(log n) 二、堆的相关概念 堆(Heap是 阅读全文
posted @ 2023-12-17 17:36 Ac_c0mpany丶 阅读(82) 评论(0) 推荐(0)
摘要:链表的算法题中很常见的技巧: 添加虚拟头结点,即dummy结点。当需要创造一条新链表的时候,可以使用虚拟头节点简化边界情况的处理。 例如:LeetCode21. 合并两个有序链表,让两条有序链表合并成一条新的有序链表,需要创造一条新的链表。 例如,LeetCode86. 分隔链表,把一条链表分解成两 阅读全文
posted @ 2023-12-13 09:28 Ac_c0mpany丶 阅读(30) 评论(0) 推荐(0)