自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第四十天 动态规划part03

第二题 96.不同的二叉搜索树。

2023-11-06 19:00:31 88

原创 代码随想录第三十九天 动态规划part02

第二题 63 不同路径。

2023-11-06 16:40:31 105

原创 代码随想录第三十八天 动态规划part01

第一题 509 斐波那契数列。

2023-11-06 16:22:24 89

原创 代码随想录第三十六天 贪心算法part06

第一题单调递增的数字。

2023-10-28 22:32:18 90

原创 代码随想录第三十五天 贪心算法part05

需要注意分割条件是i == end 不是i == letter[s[i] -'a'] 因为后者并不一定是当前的条件下的分割最小位置,举例来说 ABAAA,对于当i =1的时候虽然这个数列确实是B的最远位置,但是前面仍有一个A,A的最远位置在4,所以一定要注意判别条件。看了解析知道了还可以直接用back()来对已经压入向量组中的元素进行修改的。第三题 合并区间。

2023-10-28 15:30:26 58

原创 代码随想录第三十四天 贪心算法part04

两点: 1.需要设置迭代器来循环到需要插入的位置,因为用的是列表所以可以降低运行时间,但是要注意迭代器是result的迭代器,因为你是需要循环到需要插入元素的列表的位置,所以it不是等于people的头部位置。这里第一次写的时候不仅没有用迭代器直接插入了,而且还写成了people的迭代器。2.由于使用的是列表,但是该函数输出的是向量所以还要对结果进行转化。用最少数量的箭引爆气球。

2023-10-28 14:18:01 51

原创 代码随想录第三十三天 贪心算法part03

注意第二个for循环中从右往左遍历时可能candy[i]的值比2来的大但是candy[i+1]还是1 所以需要进行判断,如果比一大取大的值。注意比较器要设置成静态 因为静态变量不需要创建对象。K次取反后最大化的数组和。

2023-10-26 22:52:07 49

原创 代码随想录第三十二天 贪心算法part02

第一次知道这个边界条件是可以变化的。买卖股票的最佳时机II。

2023-10-26 20:32:56 83

原创 代码随想录第31天 贪心算法part01

【代码】代码随想录第31天 贪心算法part01。

2023-10-26 17:53:40 83

原创 代码随想录第二十九天回溯算法part06

第一题 重新安排里程。

2023-10-25 22:32:43 29

原创 代码随想录第二十八天 回溯算法part05

本来自己是用set的傻瓜方法来两个for循环判断的,代码里是直接在回溯里加了unordered_set就进行了判断,速度确实是快了。有了重复的元素于是加了个排序 然后如果同层出现就直接跳过。

2023-10-25 18:07:53 44

原创 代码随想录第二十七天 回溯算法

1.因为向量是一个字符串所以不需要用vector 这要一层vector就行了,搞了半天真的气,书写出来一个小问题,外面用了nums 里面用了s ,还有就是index前面int忘记写了。2.因为输入的是字符串所以是‘0’ 不是0,导致判断的时候一直识别不了。加一个used数组就行了。

2023-10-25 17:14:24 36

原创 代码随想录第二十六天 回溯算法part03

【代码】代码随想录第二十六天 回溯算法part03。

2023-10-21 20:27:05 31

原创 代码随想录第二十五天 回溯算法part02

电话号码的字母组合。

2023-10-21 17:57:54 51

原创 代码随想录第二十四天 回溯算法part01

【代码】代码随想录第二十四天 回溯算法part01。

2023-10-21 16:42:01 64 1

原创 代码随想录第二十二天 二叉树part08

将有序数组转换为二叉搜索树。二叉搜索树转换为累加树。

2023-10-21 12:50:07 73 1

原创 代码随想录第二十一天 二叉树part08

二叉搜索树的最近公共祖先。删除二叉搜索树中的节点。二叉搜索树中的插入操作。

2023-10-20 15:04:18 73 1

原创 代码随想录第二十天二叉树part07

二叉树的最近公共祖先。二叉搜索树的最小绝对差。.二叉搜索树中的众数。

2023-10-19 12:03:02 51 1

原创 代码随想录第十九天 二叉树part06

一遍A但是内存占用和运行时间都相对长了一点,看了解答发现确实可以减少很多步骤。看了解析自己写了一遍。直接用中序遍历做 还行。没什么难度 也A了。

2023-10-18 20:59:54 63

原创 代码随想录第十八天 二叉树part05

尝试看了答案修改了以下 把函数写成了void类型之后运行时间减少了,确实有用。自己写了一版发现还是别人的比较香 又短运行又快。第四题 从中序与后序遍历序列构造二叉树。尝试了下用递归和队列去做,都完成了。稍微学了一下 后一题就能自己写了。从前序与中序遍历序列构造二叉树。学了下上面的方法还是比较简单的。

2023-10-17 14:50:36 84

原创 代码随想录第十五天二叉树part03

注意判断条件是左右节点都为null才是叶子节点,如果左边为空就计算右边的叶子节点的最小深度然后加上根节点的高度1返回。n叉树的方法也差不多,只是递归的时候需要用for来对所有子节点深度进行递归,用了递归和迭代两种方法都写出来了。第三题完全二叉树的节点个数。用递归和迭代法都写出来了。第一题 二叉树的最大深度。第二题 二叉树的最小深度。

2023-10-15 19:02:55 129 1

原创 代码随想录第十四天二叉树part02

熟悉套路之后没什么问题,还把后面十道题都做了。看着答案写了两遍总算是写出来了。使用的是递归的方法,还是比较好理解的。还有使用迭代的方法来做的。2.考虑每一步的迭代内容。

2023-10-15 15:45:43 137 1

原创 代码随想录第十三天二叉树part01

【代码】代码随想录第十三条。

2023-10-14 11:55:56 61 1

原创 代码随想录第十二天 栈与队列part03

2.没有搞明白应该队列是严格不增的,所以在队尾直接插入了元素,而没有判断已经入列的数是不是比我后入列的小 比方说上面的第三步 31入列后我需要从队尾把1弹出再加入2 否则3移出窗口后1是没有办法自己弹出的。其次判断条件应该是"val > que.back()"因为如果出现相同的最大值,首个最大值会被直接弹出,当下次判断pop的时候,因为val等于队首,所以 会把第二个最大值也弹出,就导致结果出错了。这样做严格保证了队首的元素是最大值,然后pop的元素如果不等于队首元素就不弹出,否则弹出。

2023-10-13 15:45:09 34

原创 代码随想录第十一天 栈与队列part2

自己写的时候先判断了是否顶部和s[i]相等(pop那步),其他的用else表示但是好像不行,因为可能会出现st里还没有元素的情况。需要记住字符串的队尾不是用top(),top是栈的顶部,这里应该是用back()才对。删除字符串中的所有相邻重复。第三题 逆波兰表达式求值。理解之后没什么大问题。

2023-10-12 20:05:46 45

原创 代码随想录第十天

需要注意的是pop的条件如果本来stout就非空可以直接从out口先弹出,while里的部分都是在stout为空需要把stin底部的元素弹出才进行的,不然不用这么麻烦。理解了题目之后一遍A还行。第二题 用队列实现栈。

2023-10-11 19:09:07 24

原创 代码随想录第九天 字符串2 part2

比较的时候i是从0开始的不是像计算next数组从1开始找公共前后缀,还有最后输出的结果是i-len+1 因为i是从0开始的len的话是1开始算起。判断的时候记得用erase去掉头尾,去尾部的时候记得注意end()-1,因为end返回的是最后一个的下一个位置。之前看了一个视频学了下,现在大概能完全a出来了,

2023-10-11 18:07:58 29

原创 代码随想录第八天 字符串

最后还是看了解题思路才明白,还有这个reverse本来想直接reverse(s[i-1],s.end());说实话这个翻转条件真的想了半天没想明白。剑指Offer 05.替换空格 题没了。5.剑指Offer58-II.左旋转字符串。二是如果数组小于k的话会直接出现越界。541. 反转字符串II。151.翻转字符串里的单词。

2023-09-28 17:25:29 25

原创 代码随想录第七天 哈希表2

试了下用map写,之前给的方案使用数组直接计算,对比了下自己的方法确实慢了许多(一倍),内存倒是差不多大小,上面的代码里标注的是自己写的对比方法,等于一共用了三个for 实际上两个就可以了(因为在第二个for里只要出现不满足条件的就可以直接return 完全不需要继续计算下去了)主要遇到一个小问题,find找的是键(第一个int),myset[0-c-d]是对应键的值(即第二个int),差点还用了myset.second.2.最后两个的判定条件是while 不是if 即如果相等就一直++和--

2023-09-26 19:02:17 93 1

原创 代码随想录day6哈希表

我自己写的是将nums1的元素先添加到sum中,如果nums2的元素能在set中找到就把该元素插入到result向量中,并将sum中的元素删除(这是为了防止出现重复,我们只计算一次相同元素),上面的方法是通过insert到set中防止元素重复,而我则是直接吧元素删除来防止重复。1.创建两个set一个存第一个数组的元素,第二个set里存放共有的元素(即如果在第一set里找到了第二个数组的元素那么就把该元素添加到第二个set里),然后把第二个set里的元素组装成向量输出。3.find比较的元素是cur不是n。

2023-09-26 17:43:44 28 1

原创 347. 前 K 个高频元素

3.pri弹出的元素是一个二维的量不能直接用top赋值给result 需要加top().first,来取出对应的键。1.定义完比较器直接写return了 忘记加bool operator()了。2.小顶堆定义时少了">"

2023-09-24 17:52:25 16 1

原创 leetcode 239题滑动窗口最大值

我理解的错误的原因是在定义的第二个函数push里把val=que.back()放进去了,我们假设一个数列 用例[3 4 5 7 6 7 6 1 2] k=4中,当运行到元素7(下标3和下标5)时包含两个相同的最大值,如果按照之前错误的代码我把相同情况下的第一个7弹出了,那么在运行到que.pop(nums[i-k])时发现满足val =que.front(),但其实这时候弹出的是第二个7,导致在实际用例中本还应该作为两次最大值的(第二个)7提前被弹出了。先附上错误的再附上正确的代码。

2023-09-23 14:22:14 17 1

原创 leetcode 20有效括号及1047 删除相邻重复项

第一题其实前三个if已经把等于左括号的情况说明了,所以一旦这个栈空了或者没有遇到不等于对应右括号的情况就肯定是不能消除干净了(因为这个栈空了但是进来的不是最前面的三种情况),所以输出false。接下来就只剩下是相互对应的情况了,所以直接用else就行了。我当时没有搞明白为什么最后一个else if 可以不写条件能直接用else。现在明白了,不过发现加了之后运行时间反而变短了,说明还是给明确条件的时候运行更快。第二题的话就是先写了等于尾部的情况,pop了然后发现不对,调整了顺序,先写push就对了。

2023-09-22 20:38:52 13

原创 代码随想录第三天

主要还是概念没分清楚,head一直以为是第一个元素,其实它只是个虚拟头结点,我需要得到第index个位置的元素,如果index=0 并不是不运行程序,而是也要运行一次让cur指向虚拟节点head的下一个元素,所以我用while做就明显不对了。3.也是我最错误的一个点,while的条件应该是当前cur的值是不是为空,为这样写条件呢?使用的是双指针方法,用pre记录cur的前一个位置,cur作为当前链表操作位置,如果出现了对应的val值,就让pre的next指向cur的next;2.pre的定义式也给错了。

2023-09-22 18:43:30 835 1

空空如也

空空如也

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

TA关注的人

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