算法
文章平均质量分 84
安苒_
这个作者很懒,什么都没留下…
展开
-
算法|15.图相关算法
【代码】算法|15.图相关算法。原创 2023-05-29 21:56:07 · 389 阅读 · 0 评论 -
算法14.并查集
【代码】算法14.并查集。原创 2023-05-29 21:56:35 · 176 阅读 · 0 评论 -
算法|13.贪心
一共花费110铜板。题意:一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲,给你每一个项目开始的时间和结束的时间。costs[i]表示i号项目的花费,profits[i]表示i号项目在扣除花费之后还能挣到的钱(利润),K表示你只能串行的最多做k个项目,M表示你初始的资金。题意:给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中字典序最小的结果。例如,给定数组{10,20,30},代表一共三个人,整块金条长度为60,金条要分成10,20,30三个部分。原创 2023-05-29 21:55:47 · 791 阅读 · 0 评论 -
算法11.从暴力递归到动态规划4
无法改写成dp,不是因为是字符串,而是之前那个贴纸问题可能性太多了,而这个最长公共子序列同样是两个字符串,但是极限可能也是两个字符串中最大的长度相同。概率问题,其实可以通过实验获得生存点数,然后除以总可能展开的点数,可以得到计算最长公共子序列和最长回文子串问题都可以通过样本对应尝试模型完成最长公共子序列——四种情况(00,10,01,11);边界条件(i=0,j=0,i=0&j=0)分裂数字问题Bob生存概率问题——边界条件rest、位置有效性;四种可能收集总情况。原创 2023-05-28 16:37:05 · 697 阅读 · 0 评论 -
算法12.从暴力递归到动态规划5
分析清楚业务中的参数,确定范围套用其他三种尝试模型机器人行进问题——1,7,中间,rest为0,两个可变参数象棋跳马问题——三个可变参数,走马的八种情况;参数的范围和方向N皇后问题——目前只掌握题意和递归喝咖啡——放弃…原创 2023-05-28 16:23:16 · 846 阅读 · 0 评论 -
算法|10.从暴力递归到动态规划3
题意:给定一个整型数组arr(都是正数),代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿。但是每个玩家每次只能拿走最左或最右的纸牌。玩家A和玩家B都绝顶聪明,请返回最后获胜者的分数。解题思路:核心代码:递归代码:缓存的方法:dp代码:测试代码:测试结果:题意:给定一个字符串str,返回这个字符串的最长回文子序列长度比如 : str = “a12b3c43def2ghi1kpm”,最长回文子序列是“1234321”或者“123c321”,返回长度7。解题思路原创 2023-05-28 16:19:46 · 636 阅读 · 0 评论 -
算法|9.从暴力递归到动态规划2
进入嵌套的for循环后,看是不是需要加if判断条件。因为递归中是前边的边界判断完才能执行普遍位置的逻辑的,其实也相当于一个else分支,要记得判断!!!贴纸问题改不了dp的递归原因:两个都是字符串长度/个数不确定,表的大小可能非常大,此时使用缓存表即HashMap数字字符串转英文字符串:尝试策略——决策位置到头了没被挡,返回1;当前决策位置值为‘0’,之前的有问题,返回0;否则就是自己决策数量和拉上邻居决策的总数量。改dp注意:参数范围,初始方向奇偶不敏感型累加和对半数组划分:rest原创 2023-05-28 10:28:55 · 900 阅读 · 0 评论 -
算法8.从暴力递归到动态规划1
确定可变参数个数——dp是几维表确定可变参数的变化范围——是0N还是0N-1预处理(边界条件)确定普遍位置怎么确定边界判断——使用三目时一定要注意加括号😥四个角中的哪个是最终结果01背包——边界判断:超重是-1,没装够/刚好是0;要和不要的两种情况pk,要较小值完全背包多重背包组成aim的方法数(每张认为是一种)——边界判断:超支/不够都是0,aim=0时index原创 2023-05-27 20:47:20 · 1047 阅读 · 0 评论 -
算法7.从暴力递归到动态规划0
汉诺塔:六个子过程,打印内容为“Move ”+n +“from xx to xxx”斐波那契:无话可说,1||2||n-1||n-2打印全部子序列:非去重:str,index,list,path,到头了加入,要与不要;去重:使用HashSet过滤,只是换了一种收集容器打印全排列:总体思路,自己玩自己的(当前位置和可能成为当前位置的元素进行交换n!种可能)先交换,去下个位置,再回复现场(for循环)非去重:str,index,list。原创 2023-05-27 20:45:31 · 970 阅读 · 0 评论 -
算法6.堆结构、堆排序、加强堆
堆是一颗完全二叉树。优先级队列底层是它。逻辑结构是完全二叉树,存储结构是数组堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。比较器:非基础类型;类实现接口;传对象堆创建:数组;pop–下沉heapify,push——上浮heapInsert(while条件的两个作用)堆排序:从下往上建堆;从上往下建堆;比较的元素,赋的值是坐标heapSort(建堆(heapInsert)+改成有序(heapify)),升序建大根堆,降序建小跟堆。原创 2023-05-27 20:43:28 · 1011 阅读 · 0 评论 -
算法|5.快速排序相关
算法描述:时间复杂度:平均/最好:O(nlogn)空间复杂度:平均最好:O(nlogn)证明忽略不稳定荷兰国旗——大于区左扩,小于区右扩,三个index调整荷兰国旗总结:大于区左扩,小于区右扩,index原创 2023-05-26 21:14:08 · 457 阅读 · 0 评论 -
算法|4.归并排序及应用
基于分治法的一种排序算法,将全序列拆分成子序列,使子序列有序后,再进行合并得到全有序的序列。时间复杂度:O(nlogn)空间复杂度:O(logn)稳定的算法抓住指针不回退,单调的即技巧流程像——顺序决策,与大小有关归并排序递归实现:归并排序非递归实现:判断左组存在,判断右组存在,滚成整数最大值,循环停不下来小和问题:原则——右组拷贝不产生小和,左组拷贝产生小和,相等时先拷贝右组。先计算再拷贝逆序数对问题:从右向左拷贝;拷贝原则只与左右方向有关,等号斟酌,计算永远在拷贝之前。原创 2023-05-26 18:59:40 · 826 阅读 · 2 评论 -
算法|2.异或运算
相同为0,相异为1。理解:无进位相加0^N=NN^N=0满足交换律和结合律不使用临时变量交换:三个等式aba寻找偶数次中的唯一奇数次:全部异或寻找偶数次中的唯二奇数次:异或分组异或;分组规则最右侧的1(相反数的补)寻找M次中的K次:辅助数组;对每个二进制统计(移位);对辅助数组遍历(或)原创 2023-05-26 16:03:03 · 892 阅读 · 0 评论 -
算法|1.二分及其扩展
*算法描述:**不断对闭区间(其实有时候处理的是半开半闭区间、开区间)一分为二的方法。**基本思想:**一分为二有序数组查找指定元素/下标无序数组(满足左右淘汰逻辑)查找指定元素/下标有序数组查找指定元素:数组必须预处理保证有序,三分支均为arr[M]与num比较,调整放到分支外有序数组查找>=num最左边的位置:即查找数组中大于等于num的最小值的下标。其中一和arr[M]>num分支合并,不断更新,更新方向R=M-1。原创 2023-05-26 12:45:39 · 872 阅读 · 0 评论 -
Leetcode刷题day9|字符串二|28.实现strStr(),459.重复的子字符串,字符串总结,双指针总结
力扣|字符串|查找|KMP|双指针法原创 2023-01-06 19:06:19 · 417 阅读 · 0 评论 -
Leetcode刷题day8|344.反转字符串, 541. 反转字符串II, 剑指Offer 05.替换空格, 151.翻转字符串里的单词, 剑指Offer58-II.左旋转字符串
力扣|字符串|反转|双指针|算法|String|StringBuilder原创 2023-01-06 17:07:09 · 244 阅读 · 0 评论 -
Leetcode刷题day7|454.四数相加II, 383. 赎金信,15. 三数之和 ,18四数之和
哈希、快速查找、n数之和原创 2022-11-22 10:40:08 · 623 阅读 · 2 评论 -
Leetcode刷题day6|242.有效的字母异位词 ,349. 两个数组的交集, 202. 快乐数,1. 两数之和
哈希表:map、set、数组原创 2022-11-21 17:27:19 · 588 阅读 · 2 评论 -
Leetcode4刷题day4|第二章链表2| 24. 两两交换链表中的节点|19.删除链表的倒数第N个节点 |02.07. 链表相交 |142.环形链表II【含步骤拆分图】
Leetcode、链表、双指针、快慢指针、环形链表24. 两两交换链表中的节点|19.删除链表的倒数第N个节点 |02.07. 链表相交 |142.环形链表II原创 2022-11-20 10:49:40 · 516 阅读 · 0 评论 -
Leetcode刷题day3|第二章链表1| 203.移除链表元素 ,707.设计链表 ,206.反转链表
链表、反转、移除元素、链表设计原创 2022-11-18 10:24:44 · 888 阅读 · 2 评论 -
Leetcode刷题day2|数组二|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
滑动窗口、螺旋矩阵、双指针、二分、数组、算法、java版原创 2022-11-17 15:22:19 · 1284 阅读 · 2 评论 -
Leetcode刷题day1|数组一|704.二分查找,27.移除元素,35.搜索插入位置
力扣、数组、双指针、二分原创 2022-11-16 14:03:41 · 1552 阅读 · 2 评论 -
【DS】9.常用排序算法大总结【下】!!
非比较排序/计数排序/基数排序/桶排序/十大经典排序/步骤拆分图/过程演示原创 2022-10-23 11:05:36 · 601 阅读 · 5 评论 -
【DS】9.快速排序大总结!!!
快速排序/Hoare/挖坑法/非递归/递归/前后指针/快排优化/过程演示原创 2022-10-23 10:59:43 · 362 阅读 · 0 评论 -
【DS】9.常用排序算法大总结【上】!!!
冒泡排序/选择排序/插入排序/希尔排序/归并排序/快速排序/堆排序/十大排序算法详解原创 2022-10-22 21:45:11 · 517 阅读 · 27 评论