7 天带你全方位刷爆数据结构与算法,每天一道,高效刷题
前言
很多算法小白初期刷题比较迷茫,不知道从何刷起从何入手,也不知道怎么使用 LeetCode,这篇带你高效使用力扣,让刷题进大厂的路上不再迷茫!
1、反转链表
反转一个单链表:
复制代码
 方法 1:
迭代,重复某一过程,每一次处理结果作为下一次处理的初始值,这些初始值类似于状态、每次处理都会改变状态、直至到达最终状态。
从前往后遍历链表,将当前节点的 next 指向上一个节点,因此需要一个变量存储上一个节点 prev,当前节点处理完需要寻找下一个节点,因此需要一个变量保存当前节点 curr,处理完后要将当前节点赋值给 prev,并将 next 指针赋值给 curr,因此需要一个变量提前保存下一个节点的指针 next。
 
 1、将下一个节点指针保存到 next 变量 next = curr.next
2、将下一个节点的指针指向 prev,curr.next = prev
3、准备处理下一个节点,将 curr 赋值给 prev
4、将下一个节点赋值为 curr,处理一个节点
方法 2:
递归:以相似的方法重复,类似于树结构,先从根节点找到叶子节点,从叶子节点开始遍历大的问题(整个链表反转)拆成性质相同的小问题(两个元素反转)curr.next.next = curr 将所有的小问题解决,大问题即解决
 
 只需每个元素都执行 curr.next.next = curr,curr.next = null 两个步骤即可
为了保证链不断,必须从最后一个元素开始
复制代码
 2、统计 N 以内的素数
 
 3、寻找数组的中心索引
 
 4、删除排序数组中的重复项
 
 5、x 的平方根
 
 6、三个数的最大乘积
 
 7、两数之和
 
 8、斐波那契数列
 
 9、环形链表
 
 10、排列硬币
 
 11、合并两个有序数组
 
 12、子数组最大平均数
 
 13、二叉树的最小深度
 
 14、最长连续递增序列
 
 15、柠檬水找零
 
 16、三角形的最大周长
 
 17、二叉树遍历
 
 18、省份数量
 
 19、预测赢家
 
 20、香槟塔
 
 21、井字游戏
 
 22、打家劫舍
 
 23、优势洗牌
 
 24、Dota2 参议院
 
 算法笔记及代码文档
 
  
 需要文章中配套资料的朋友可以——点击传送门










 
    
评论