自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【20230630】数组小结

【代码】数组小结。

2023-06-30 16:35:34 487

原创 八股学习Day1

virtual:虚函数是指在基类中声明的函数,在派生类中可以被重写。静态成员函数没有this指针,虚函数的实现是为每一个对象分配一个vptr指针,而vptr是通过this指针调用的,所以不能为virtual;当一个成员函数被调用时,编译器会将该函数的调用对象的地址作为this指针传递给函数。静态成员函数中没有这样的this指针,所以静态成员函数不能操作类中的非静态成员函数.否则编译器会报错.静态成员函数不依赖于任何对象,只能对静态成员变量做修改,不涉及任何其他对象变量的修改,因此不能声明为。

2023-06-22 17:40:00 603

原创 【20230606】【每日一题】不同的子序列

1.当s[i-1]==t[j-1]时,dp[i][j]可以由两种情况得到:一种是用s[i-1]来匹配,一种是不需要s[i-1]匹配,因为在这之前就已经有子序列出现了。当用s[i-1]来匹配时,数量为dp[i-1][j-1];当不用s[i-1]来匹配时,数量为dp[i-1][j];dp[i][j]:以i-1结尾的s子序列中出现以j-1结尾的t的个数。2.当s[i-1]!=t[j-1]时,只能不用s[i-1]来匹配了,题目数据保证答案符合 32 位带符号整数范围。初始化时:dp[i][0]=1。

2023-06-06 10:58:32 300 1

原创 面试经验小结

继承中构造和析构顺序如下:先构造父类,再构造子类;先析构子类,再析构父类。C++的编译过程中,将函数名后面的数据类型也加入到了编译阶段。本质原因:程序访问了非法的地址。

2023-05-24 21:09:43 798 1

原创 贪心算法小结

相当于寻找极值点的过程,predif和curdif分别记录前一点和当前点与前一元素的差值,两者异号的话,result++DP:dp[j]表示到下标j为止,连续子数组的最大和;有两种情况来:1.加在上一个上面 2.从这个数开始另起山头。,先判断下标,防止出现下标越界的情况;贪心:当连续和出现负数的时候立马放弃。2.优先将大饼干先给胃口大的吃。删除单调坡度上的节点。

2023-04-23 19:40:23 1838

原创 【20230413】【每日一题】最大矩形

3.因此,遍历每一行时,都能够得到以这一行为底的带高度的数组;柱状图的最大矩形的扩展题,

2023-04-13 15:29:03 87

原创 【202304113】【每日一题】柱状图中最大的矩形

单调栈,维护一个单独递增的栈,只有放入元素比栈顶元素大才入栈,否则一直pop +计算最大面积。栈中初始化一个-1,数组的末尾添加一个元素0,这样才能计算所有的情况(或者说清空栈)。以2 1 5 6 2 3为例。

2023-04-13 11:32:34 93

原创 【20230412】【每日一题】数组二叉树+最小叶子节点的路径

【代码】【20230412】【每日一题】数组二叉树+最小叶子节点的路径。

2023-04-12 16:58:02 163

原创 【20230407】【每日一题】编辑距离

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数。1.dp[i][j]]表示以下标i-1结尾的word1 和以下标j-1结尾的word2的最近编辑距离;2.确定递推关系式:一共有4种情况。注意这里的插入、删除、替换操作。插入可以看成是word2的删除。

2023-04-07 10:15:28 319

原创 【20230401】【每日一题】前K个高频元素

在STL中,默认情况下(不加后面两个参数)是以vector为容器,以 operator< 为比较方式,所以在只使用第一个参数时,优先队列默认是一个最大堆,每次输出的堆顶元素是此时堆中的最大元素。对于container,要求必须是数组形式实现的容器,例如vector、deque,而不能使list。堆是一颗完全二叉树,树中每个节点的值都不小于(或不大于)其左右孩子的值。大顶堆(堆头是最大元素) 小顶堆(堆头是最小元素)container:实现优先队列的底层容器;优先级队列:披着队列外衣的堆。

2023-04-01 13:54:50 245

原创 【20230331】【每日一题】每日温度

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素的元素,优点是只需要遍历一次。通常是一维数组,要寻找任一元素的右边/左边第一个比自己大或自己小的元素位置。

2023-03-31 15:17:04 202

原创 ACM模式练习2-链表

方法的话双指针,快的先走k步;直到快的为空的时候,慢指针指向倒数第k个节点。string的find函数返回的是下标。ACM模式的构造链表。

2023-03-30 15:43:40 242

原创 【20230329】【每日一题】最长公共子序列

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。

2023-03-29 17:20:41 89

原创 【20230328】【每日一题】最长重复子串

长度最长的子数组的长度。

2023-03-28 11:57:00 76

原创 ACM模式突击练习

华为机考ACM模式冲刺练习

2023-03-23 21:38:29 386

原创 【20230322】【每日一题】最长连续递增序列

连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l

2023-03-22 10:01:39 91

原创 【20230321】【每日一题】最长递增子序列

子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。dp数组的含义:到下标i为止,以nums[i]结尾的最长递增子序列的长度。给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。以序列 0 1 0 3 2 为例。

2023-03-21 09:34:46 90

原创 【20230320】【每日一题】买卖股票的最佳时机含手续费

给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格;整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。返回获得利润的最大值。

2023-03-20 09:35:49 87

原创 【20230320】【每日一题】最佳买卖股票时机含冷冻期

设计一个算法计算出最大利润。冷冻期的由来:只能是两天前持有,一天前卖了(还是得和冷冻期的前一天状态比较)含有冷冻期,就在每天里加上冷冻期的状态。有三种状态:未持有、持有、冷冻期。另外,在初始化时,由于冷冻期的状态与两天前有关,所以初始化得初始化两天。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。持有的由来:延续上一天的持有/上一天是冷冻期今天又买了。未持有的由来:延续上一天的未持有/上一天持有今天卖了。

2023-03-20 09:23:17 88

原创 【20230317】【每日一题】买卖股票的最佳时机IV

给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。与买卖股票3类似,3最多两笔,5个状态;这里k笔,那么设置2k+1个状态即可。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。设计一个算法来计算你所能获取的最大利润。递推关系式也可以在3种看出规律。你最多可以完成 k 笔交易。

2023-03-17 11:51:51 86

原创 【20230316】【每日一题】买卖股票的最佳时机III

/第二次持有依赖于前一天的第一次未持有的状态。dp[i][1]有两种来源:第i天买入了;第i天没买,i-1天时就持有了。给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。确定dp数组及其下标含义 :一天一共有五个状态。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。确定遍历顺序 从前往后。

2023-03-16 14:33:07 83

原创 【20230316】【每日一题】买卖股票的最佳时机

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。//到下标i未持有,有两种可能:1.下标i-1就未持有;2.i-1持有到i时卖了。//到下标i持有,有两种情况:1.下标i-1就持有;2.i-1未持有到i时买了。特别是i-1未持有,i时才买,由于本题只能买卖一次,所以直接-prices[i]就行。返回你可以从这笔交易中获取的最大利润。

2023-03-16 13:28:10 87

原创 【20230314】【每日一题】打家劫舍III

在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。:下标为0记录不偷该节点所得最大金钱,下标为1记录偷该节点所得最大金钱。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。一个节点偷与不偷的两个状态,返回值是一个长度为2的数组。确定递归函数的参数和返回值。dp数组及其下标的含义。

2023-03-14 15:42:21 103

原创 【20230306】动态规划小结

如果某一个问题有很多重叠子问题,使用dp是最有效的。动态规划中每个状态一定由上一个状态推导而来。动规五部曲:确定dp数组以及下标的含义;确定递推公式;dp数组的初始化;确定遍历顺序;举例验证dp数组。

2023-03-14 11:36:38 178

原创 【20230227-0306】回溯算法小结

回溯法又叫回溯搜索法,是搜索的一种方式。回溯法本质是穷举所有可能。如果想让回溯法高效一些,可以加一些剪枝操作。回溯算法解决的经典问题:组合问题切割问题子集问题排列问题棋盘问题。

2023-03-03 19:51:12 680

原创 【20230303】【剑指1】模拟(中等)

提交一直有问题,等有时间搞一下数组遍历的专题。

2023-03-03 16:01:04 49

原创 【20230302】【剑指1】数学(中等)

n个数组成一个圆圈,每次删除第m个数约瑟夫环问题,动态规划假定输入n,m记为【n,m问题】,设剩下的数为f(n);则有【n-1,m问题】:数字环0,1,2...n-2,解为f(n-1)。

2023-03-02 10:41:11 62

原创 【20230301】【剑指1】数学(简单)

理论上用摩尔投票法空间复杂度能得到简化,但是奈何实在难以看懂,暂时先用哈希解决吧。

2023-03-01 10:05:33 54

原创 【20230227】【剑指1】位运算(简单)

若n&1=1,则n的二进制最右一位为1。根据按位与运算,若n&1=0,则n的二进制最右一位为0;

2023-02-27 15:46:47 51

原创 【20230225】【剑指1】分治算法(中等)

需要注意的是n的取值范围,可以发现当n为最小值时,直接取反会导致整型溢出,于是需要将这种情况单独进行讨论。每次遇到乘法时,都得防止发生溢出,利用如下公式,对每次a与乘出的结果都做一次取模运算;如下图所示,在幂运算过程中仍然可以递归,这样可以实现O(logn)的时间复杂度;找到切割点后,右子树的所有点应该比根结点的值才对,否则返回false。归根结底仍是数组与二叉树之间的转换问题,那么就离不开寻找切割点; 如下图所示,每次都可以将数组中的。b是一个数组,应该如何处理?如何高效的进行幂运算?

2023-02-26 16:07:54 396

原创 【20230224】【剑指1】搜索和回溯算法(中等)V

要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?只要从上往下遍历,出现的第一个在p、q之间的节点,就一定为最近的公共祖先。如何判断一个节点是p、q的最近公共祖先?运用逻辑运算符的短路效应。

2023-02-24 15:17:53 47

原创 【20230222】【剑指1】搜索和回溯算法(中等)IV

这两天都是基础题,又都刚刚复习过,直接默写!

2023-02-22 19:28:30 50

原创 【20230210-0226】二叉树小结

二叉树的种类二叉树的主要形式:满二叉树和完全二叉树。满二叉树深度为k,有2^k-1个节点的二叉树完全二叉树除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。二叉搜索树二叉搜索树是一个有序树• 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;• 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;• 它的左、右子树也分别为二叉排序树平衡二叉搜索树(AVL树)它是一棵空树或它的左右两个子树的高度差的绝对值不超

2023-02-22 17:15:52 486

原创 【20230221】【剑指1】排序(中等)II

Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆。具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的。,将所有小于基准数的元素移动至其左边,大于基准数的元素移动至其右边。

2023-02-22 10:43:06 259

原创 【20230221】【剑指1】排序

但是就(s1+s2)

2023-02-21 17:01:55 51

原创 【20230220】【剑指1】回溯与搜索算法II

我这里有疑问的是 对pre、head的初始化,用new就不行了,为啥呢?我们需要定义两个指针,来记录遍历的前一节点pre与头节点head。首先面对二叉搜索树,如果用中序遍历,则可以变成有序的形式。

2023-02-20 20:55:18 59

原创 【20230218】【剑指1】搜索与回溯算法

回溯三部曲:回溯函数模板返回值及参数回溯函数终止条件回溯搜索的遍历过程。

2023-02-18 11:20:12 62

原创 【20230217】【剑指1】双指针(简单)III

1.首先得去除多余空格,双指针法,快慢指针,类似于数组中的移除元素,当快指针不为空格时就存到slow上,并且在fast找到字母时判断此时slow是不是在句首,不然的话,要加个空格;当fast比size小,并且一直为字母时,就一直赋给slow;resize改变原字符串大小,resize(slow)4.用i去遍历,当找到一个空格时,就反转一个,或者就只有一个单词(i==s.size())left从左出发,right从右出发。但是利用本身数组为有序数组的特性。2.写个反转字符串的函数。3.先反转整个字符串。

2023-02-17 14:32:48 99

原创 【20230216】【剑指1】双指针(简单)II

【代码】【20230216】【剑指1】双指针(简单)II。

2023-02-16 16:19:16 58

原创 操作系统-处理机调度

制定某种规则来决定处理任务的顺序。进程的挂起态与七状态模型。高级调度(作业调度)中级调度(内存调度)低级调度(进程调度)

2023-02-15 19:34:40 342

空空如也

空空如也

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

TA关注的人

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