自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 【总结】背包问题的至多/恰好/至少

对于一维背包问题,注意区分该问题的下面这三种情况,即至多/恰好/至少,它们的状态转移方程其实是一样的,差异在于初始化。(1) 体积至多是v时的最小/大值全部初始化为0,且保证v大于等于0。代表题目:AcWing 423.采药,其代码如下:import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in);

2021-04-26 23:24:48 401

原创 整数二分查找

下面分享常用的二分查找模板。面对具体算法题时,分析出check()函数该如何写后,根据左边界l应该写为l = mid + 1还是l = mid来选择使用哪一个模板,一般来说就无需额外考虑边界的问题了。模板1boolean check(int x){/* ... */} // 检查x是否满足某种性质int binary_search(int l, int r){ while(l < r){ int mid = l + r >> 1; // 注意可能溢出,最好写成((

2021-04-08 11:51:56 128

原创 双指针/滑动窗口

本文主要内容转载于分享珍藏的滑动窗口模板,学会套路秒杀十题双指针算法,或滑动窗口算法,在《挑战程序设计竞赛》这本书中被叫做「虫取法」,我觉得非常生动形象。因为滑动窗口的两个指针移动的过程和虫子爬动的过程非常像:前脚不动,把后脚移动过来;后脚不动,把前脚向前移动。下面分享一个代码模板,能解决大多数滑动窗口问题:public int findSubArray(nums){ int n = nums.length; // 数组的长度,如果是字符串,改成nums.length() int left =

2021-02-05 11:21:50 242

原创 【LeetCode】1319.连通网络的操作次数(Number of Operations to Make Network Connected)

目录题目描述题目大意解题方法方法一:并查集题目描述There are n computers numbered from 0 to n-1 connected by ethernet cables connections forming a network where connections[i] = [a, b] represents a connection between computers a and b. Any computer can reach any other computer di

2021-02-02 21:54:33 158

原创 【LeetCode】547.省份数量(Number of Provinces)

目录题目描述题目大意解题方法方法一:并查集题目描述There are n cities. Some of them are connected, while some are not. If city a is connected directly with city b, and city b is connected directly with city c, then city a is connected indirectly with city c.A province is a group

2021-02-02 20:10:36 793

原创 哈希表

哈希表哈希表的关键是哈希函数,以及如何处理冲突。常见的处理冲突的方法有拉链法和开放寻址法。1)拉链法使用数组实现的哈希表如图所示,数组中每个槽对应一条单链表。插入操作的基本原理是:根据哈希函数给出的哈希值,判断数组中该位置是否被占用,如果没有,则插入到此位置,如果被占用,则插入到单链表的头部(头插法)。查询操作的基本原理是:根据哈希函数给出的哈希值,如果数组中该位置没被占用,则代表查询的值不存在,如果该位置被占用,则在位置对应的单链表中顺序查找。算法题中,哈希表一般只有插入和查找操作。如果要实现删

2021-02-02 17:15:26 202

原创 并查集

目录定义实现思路代码模板定义并查集是一种树形的数据结构,主要支持这两个操作:1)询问两个元素是否属于同一个子集,即find操作;2)将两个元素所属的子集合并,即union操作。并查集可以在近乎O(1)O(1)O(1)的时间复杂度里完成上述两个操作。实现思路在并查集中,每个子集用一棵树来表示,树的根节点编号就是子集的编号。通常使用一维数组ppp来进行存储,p[x]p[x]p[x]表示节点xxx的父节点。1)如何判断是否为根节点?根节点的父节点为自身,因此,判断p[x] == x的真假即可判断是否

2021-02-01 20:11:52 109

原创 【LeetCode】1631.最小体力消耗路径(Path WIth Minimum Effort)

目录题目描述题目大意解题方法方法一:并查集题目描述You are a hiker preparing for an upcoming hike. You are given heights, a 2D array of size rows ×\times× columns, where heights[row][col] represents the height of cell (row, col). You are situated in the top-left cell, (0, 0), and

2021-01-30 22:22:35 267

原创 堆以及堆排序

堆堆是一棵完全二叉树。小根堆:每个父节点的值,都小于等于其子节点的值。因此,根节点的值为集合的最小值。大根堆:每个父节点的值,都大于等于其子节点的值。因此,根节点的值为集合的最大值。使用一维数组来存储堆。根节点的值存放在数组中索引值为1的位置。由于完全二叉树的特性,若父节点在数组的索引为xxx,则其左子节点的索引为2x2x2x,右子节点的索引为2x+12x+12x+1。(凡是完全二叉树,都是用一维数组来存储的)堆最核心的是up操作和down操作,使用这两个操作可完成以下堆(小根堆)主要支持的函数

2021-01-30 17:27:25 91 1

原创 【LeetCode】724.寻找数组的中心索引

目录题目描述题目大意解题方法方法一:前缀和题目描述Given an array of integers nums, write a method that returns the “pivot” index of this array.We define the pivot index as the index where the sum of all the numbers to the left of the index is equal to the sum of all the numbers

2021-01-28 15:43:50 92

原创 【LeetCode】1128.等价多米诺骨牌对的数量

目录题目描述题目大意解题方法方法一:排序+双指针方法二:计数题目描述Given a list of dominoes, dominoes[i] = [a, b] is equivalent to dominoes[j] = [c, d] if and only if either (a == c and b == d), or (a == d) - that is, one domino can be rotated to be equal to another domino.Return the n

2021-01-28 12:27:17 128

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除