自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 堆排序回顾

大根堆是一种特殊的二叉树,在大根堆中,每个节点的值都大于等于其子节点的值。在实际编程中也可以用数组存储大根堆,其中假设i位置是一个节点,那么它的左孩子节点位置为i*2+1,右孩子节点位置为i*2+2.即完全二叉树的性质。堆排序的第一步是建立大根堆,然后将这个大根堆的根节点(最大值)与数组中最后一个元素交换位置,并将堆的大小减1(相当于取出原来的最大值根节点)。将剩下的堆继续进行大根堆创建。在大根堆化的函数maxHeapify函数中,a是数组,i是根节点,heapSize是堆的大小。这里回顾以下堆排序。

2024-03-30 17:06:57 149 1

原创 数组中的第k个最大元素

在快排函数中添加了一个参数k,最后直接返回该位置的元素。其实主要还是快速排序的实现。给定一个整数数组和一个整数k,请返回数组中第k个最大的元素。即如果我们按照从小到大排序,那么返回数组第n-k位置的元素。如果我们按照从大到小排序,那么返回数组第k-1位置的元素。在这里使用两种排序方法。这一题重要的是排序。

2024-03-30 16:14:02 136 1

原创 快速排序回顾

在循环中我们进行当前元素与基准元素的判断,如果小于说明当前元素应该在小于区域,这时候需要将当前元素交换到小于区域中,同时小于区域的右边界++,i++并且lt位置的元素是基准,因为i是从l+1开始的,基准的开始为l,那么只有在第一个if中涉及到交换基准,而之后i的位置都会在基准的后一个位置。我们看一下交换的本质,当前元素大于基准的情况下,先将当前元素与gt位置元素进行交换之后gt-1,因此gt之后的元素都是大于基准元素的。而当前元素小于基准的情况下,当前元素与lt交换,因此lt位置之前的元素都是小于基准的。

2024-03-30 16:04:14 356 1

原创 最近的请求次数

可以选择使用队列解决,每次ping的时候,将参数入队,首先根据该参数计算出时间范围,最重要的是左界,然后从队首遍历队列,如果队首元素小于左界则出队;如果队首元素大于等于左界则此时队列大小就是返回值,并且退出循环。毫秒内发生的所有请求数(包括新请求)。RecentCounter()初始化计数器。表示以毫秒为单位的某个时间,并返回过去。int ping(int t):在时间。添加一个新请求,其中。

2024-03-29 12:44:27 91 1

原创 你可以安排的最多任务数目

在枚举中,有一个if条件句,其中的第一条语句,prev函数可以返回集合最后位置的前一位,即如果说ws的大小为y,那么这里返回的是y-1,*it实际上表示的就是ws中的最后一个位置的元素,也是最大的元素。然后遍历tasks数组,以tasks为基础判断每个任务是否能够被工人完成(完成的条件是力量值大于任务值,或者力量值加上药剂增加的力量值大于任务值),总而言之,策略是力量值小的工人完成任务值小的任务,力量值大的工人完成任务值大的任务。否则,我们求得加上药丸能够完成任务的力量值最小的工人。

2024-03-29 11:57:08 506 1

原创 字符串中的第一个唯一字符

我们用哈希表统计字符串中每个字符出现的个数,然后遍历字符串,输出当前遍历字符统计个数为1的索引,如果不存在,最后输出-1.问题描述:给定一个字符串s,找到它的第一个不重复的字符,并返回它的索引,如果不存在,则返回-1.

2024-03-28 14:56:41 190

原创 拼接最大数

通过栈顶指针的移动来表示某个数字是选择还是舍弃,当前遍历数字与栈顶元素比较,如果当前遍历数字更大那么就舍弃栈顶元素,那么remain就要减1,当remain为0时说明我们已经舍弃了remain个数字,即表明供我们选择的只剩下k个了不能再舍弃只能全部选择了。问题描述:有两个整数数组nums1和nums2,它们的长度分别是m和n,现在给一个整数k,需要在这两个数组中按顺序取出k个数字,最后组成一个长度为k的数组,要求最后长度为k的数组最大。对于该函数,输入一个数组和k,得到一个k个元素的按顺序最大的数组子串。

2024-03-28 13:41:01 387

原创 去除重复字母

如果不是递增的顺序,例如stk中为**c,当前字符为a,我们需要考虑是否删除栈顶元素c,如果num[c]大于1,说明a之后还有多个c,那么删除栈顶的c能够使得子串的字典序最小,因此弹出栈顶元素,同时置vis栈顶元素为0,表示这个字符已经弹出了,需要重新处理。我们可以动态生成结果字符串,假设原字符串长度为n,我们已经得到了一个长度为m(m<n)的字典序最小的非重复子串,然后将接下来的字符考虑添加进这个子串,使得这个子串仍然满足题目要求,直到将原字符串所有字母都进行处理,这样得到的子串就是题目要求的结果。

2024-03-25 21:29:50 217

原创 移掉K位数字

2.存在最小的数字,它是以上某个贪心操作中当前数字大于等于之前的数字(如xx267xx),却删除了当前数字(删除了6)得到的,最后结果是(xx27xx),贪心算法是保留了当前数字,得到(xx26xx),这与之前假设的(xx27xx)最小相悖,因此经过贪心操作得到的数字最小。贪心算法保留了当前数字6,但是进入下一轮迭代,当前数字为1,之前数字为6,当前数字小于之前数字,应该删除之前数字,得到(xx21xx)。如果我们移除①位置的数字,那么剩下的字符串就是以②位置的数字为最高位的数字。这是一种贪心的思想。

2024-03-21 17:16:31 778 1

原创 二叉树的中序遍历

二叉树的遍历可以使用递归的方法,中序遍历的规则为先递归左孩子节点,访问当前节点,递归右孩子节点。给定一个二叉树的根节点root,返回它的中序遍历。

2024-03-19 18:05:22 201 1

原创 有效的括号

我们可以利用栈来解决。定义一个栈,如果是左边的括号,则将该字符放入栈中,当遇到右边的括号,则判断栈顶元素是否能与当前右括号匹配,如果不能则输出false,如果能够匹配,继续遍历字符串之后的字符。遍历完字符串后,如果当前栈还有元素的话,输出false;输入:s="()[]{}",判断字符串是否有效。输入:s="([)]"

2024-03-19 17:52:00 155 1

原创 矩阵置零问题

首先定义结构体Point,用来存储矩阵中某个元素的横纵坐标。然后遍历给定矩阵中的元素,当遇到值为0的元素时,新建Point变量,存储这个元素的坐标,放入栈中。问题描述:给定一个m*n的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0,请使用原地算法实现。这样,弹出栈顶元素,根据栈顶元素的坐标数据将原矩阵的横列数据全置0。最后的结果为矩阵中所有值为0的坐标都存储栈中。

2024-03-19 17:13:14 102 1

原创 顺时针旋转图像

问题描述:给定一个n*n的二维矩阵matrix表示一个图像,请将这个图像顺时针旋转90°。我们可以像剥洋葱一样,一圈一圈来计算。根据一圈的一条边,可以计算每个元素应该旋转的位置。要求:必须在原地旋转图像,即需要直接修改输入的二维矩阵,不能使用另一个矩阵旋转图像。

2024-03-19 16:47:01 177 1

原创 生命细胞游戏

同时由于board是有边界的,所以我们对某个位置计算它的下一个状态的时候,边界处理与中间某位置周围网格数是不同的,为了能够使用相同的办法计算,我们可以将这个新矩阵最外一圈添加0来解决。问题描述:给定一个m*n个格子的面板,每一个格子都可以看成是一个细胞,每个细胞都有一个初始状态:1为活细胞,0为死细胞。3.如果当前细胞为活细胞,它周围八个位置有超过3个活细胞,则该细胞死亡,模拟生存压力过大;4.如果当前细胞为死细胞,它周围八个位置正好有3个活细胞,则该细胞复活,模拟繁殖。

2024-03-19 15:28:51 149

原创 求解螺旋矩阵

我们可以将矩阵看作是一个迷宫,有一个探险家进行探索,他先从迷宫的左上角开始向右边行进,遇到迷宫墙壁按照顺时针旋转90°继续进行探索。当他探索完成后一条迷宫的边后,这个迷宫墙壁会向中间移动即探索后的路线就不能再次探索了。因此,对于这个问题,我们需要不断的更新边界,直到边界压缩成一个边界为止。输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]给出一个m行n列的矩阵,按照顺时针螺旋顺序,输出矩阵中的所有元素。输出:[1,2,3,6,9,8,7,4,5]

2024-03-19 14:04:33 202 1

原创 士兵巡逻问题

由于要考虑所有士兵的情况,假设我们让某个士兵巡逻时间最少,那么另外的士兵巡逻时间就会变多,这样的情况下,要让最后的时间最少,那么可能的办法就是把巡逻时间多的士兵所要巡逻的城墙点分给那些时间少的士兵,这样最终每个士兵所花费的时间都会尽可能接近,那么这时候花费最长时间巡逻的士兵的时间就是我们所要求的时间。反之,在大的一部分时间找。问题描述:有一段城墙需要士兵进行巡逻,每个士兵只能巡逻连续的城墙点,每个城墙点需要耗费士兵的巡逻时间,请问怎样设计能够使得士兵巡逻的总时间最短,求最短时间是多少。

2024-03-19 02:02:11 299 1

原创 提取最长连续数字子串

提取最长连续数字子串

2024-03-18 22:11:29 209

空空如也

空空如也

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

TA关注的人

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