
算法
文章平均质量分 81
小瑞的学习笔记
写博客完全是为了回顾学过的知识点,如果能帮助到您,那真是的十分荣幸.
展开
-
剑指offer刷题笔记
如果是按照朴素做法的话,则需要循环k次时间复杂度为 O ( k ) ,则这个复杂度就比较高了,而如果是 采用快速幂时间复杂度是 O(logn)。题解 : 例如 ans[2] = A[0] x A[1] x A[3] x A[4], 删除原始链表中所有重复数字的节点,只留下不同的数字。3、将上面两个结果相加,即重复步骤1,2,直至进位的运算结果为0;我们可以简单的理解为,把老链表的节点一个个拆下来,放到新链表中。2、两个整数做与&,然后再左移一位,即得到进位的运算结果;给你一个链表,删除链表的倒数第。原创 2022-12-14 16:17:07 · 635 阅读 · 0 评论 -
LeetCode 101:和你一起你轻松刷题(C++)总篇章正在陆续更新
再从右往左遍历一遍,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖果数加 1。在样例中,我们初始化糖果分配为 [1,1,1],第一次遍历更新后的结果为 [1,1,2],第二次遍历更新后的结果为 [2,1,2]在样例中,排序后的数组为 [[1,2], [1,3], [2,4]]。因此最终保留的区间为 [[1,2], [2,4]]。在这个样例中,我们可以移除区间 [1,3],使得剩余的区间 [[1,2], [2,4]] 互不重叠。原创 2022-11-01 22:37:36 · 1722 阅读 · 1 评论 -
冒泡排序 + 快排
【代码】冒泡排序 + 快排。原创 2023-07-14 13:15:19 · 219 阅读 · 0 评论 -
LeetCode 101:第 5 章 千奇百怪的排序算法
以下是一些最基本的排序算法。虽然在 C++ 里可以通过 std::sort() 快速排序,而且刷题时很少需要自己手写排序算法,但是熟习各种排序算法可以加深自己对算法的基本理解,以及解出由这些排序算法引申出来的题目。然后弹出k - 1次最大的顶端数字,最后剩下的顶端就是我们需要的答案。将所有元素放入优先队列,优先队列的顶端就是当前最大的数。在这个样例中,最频繁的两个数是 1 和 2。如果有多个答案,返回其中任何一个。在一个未排序的数组中,找到第。输入是一个数组和一个目标值。是它出现在字符串中的次数。原创 2022-11-13 22:52:32 · 259 阅读 · 0 评论 -
LeetCode 101:第 4 章 居合斩!二分查找
题目描述给定一个增序的整数数组和一个值,查找该值第一次和最后一次出现的位置。输入输出样例输入是一个数组和一个值,输出为该值第一次出现的位置和最后一次出现的位置(从 0 开始);如果不存在该值,则两个返回值都设为-1。数字 8 在第 3 位第一次出现,在第 4 位最后一次出现。题解写出两个辅助函数,利于解题。public://主函数return v;}//取出下标最小的目标值//- 1 是为了取出第一个有用的值, L R保存的是索引。原创 2022-11-11 14:46:40 · 172 阅读 · 0 评论 -
LeetCode 101:第三章玩转双指针
因为数组已经排好序,我们可以采用方向相反的双指针来寻找这两个数字,一个初始指向最小的元素,即数组最左边,向右遍历;如果两个指针指向元素的和小于给定值,我们把左边的指针右移一位,使得当前的和增加一点。如果两个指针指向元素的和大于给定值,我们把右边的指针左移一位,使得当前的和减少一点。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是排好序的。原创 2022-11-05 20:52:05 · 612 阅读 · 0 评论 -
LeetCode 101:第二章最易懂的贪心算法
再从右往左遍历一遍,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖果数加 1。在样例中,我们初始化糖果分配为 [1,1,1],第一次遍历更新后的结果为 [1,1,2],第二次遍历更新后的结果为 [2,1,2]分析题意:我们要找的切片片段中的字符串都是互不相交的,需要先找到S字符串中每一个字符最后一次出现的位置,并把它一一保存下来,后面再找到的划分后尽可能多的最大不相交的子区间,然后返回区间长度即可。由于 [1,3] 与 [1,2] 相交,原创 2022-11-02 21:37:44 · 389 阅读 · 0 评论