7天带你全方位刷爆数据结构与算法,每天一道,高效刷题

前言

很多算法小白初期刷题比较迷茫,不知道从何刷起从何入手,也不知道怎么使用LeetCode,这篇带你高效使用力扣,让刷题进大厂的路上不再迷茫! 1、反转链表 反转一个单链表:

输入:

1->2->3->4->5 输出: 5->4->3->2->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两个步骤即可 为了保证链不断,必须从最后一个元素开始 public class ReverseList { static class ListNode{ int val; ListNode next; public ListNode(int val, ListNode next) { this.val = val; this.next = next; } } public static ListNode iterate(ListNode head){ ListNode prev = null,curr,next; curr = head; while(curr != null){ next = curr.next; curr.next = prev; prev = curr; curr = next; } return prev; } public static ListNode recursion(ListNode head) { if (head == null || head.next == null) { return head; } ListNode newHead = recursion(head.next); head.next.next = head; head.next = null; return newHead; } public static void main(String[] args) { ListNode node5 = new ListNode(5,null); ListNode node4 = new ListNode(4,node5); ListNode node3 = new ListNode(3,node4); ListNode node2 = new ListNode(2,node3); ListNode node1 = new ListNode(1,node2); //ListNode node = iterate(node1); ListNode node_1 = recursion(node1); System.out.println(node_1); } } 2、统计N以内的素数

3、寻找数组的中心索引

添加图片注释,不超过 140 字(可选)

4、删除排序数组中的重复项

5、x的平方根

6、三个数的最大乘积

7、两数之和

8、斐波那契数列

9、环形链表

10、排列硬币

11、合并两个有序数组

12、子数组最大平均数

13、二叉树的最小深度

14、最长连续递增序列

15、柠檬水找零

16、三角形的最大周长

17、二叉树遍历

18、省份数量

19、预测赢家

20、香槟塔

21、井字游戏

22、打家劫舍

23、优势洗牌

24、Dota2参议院

算法笔记及代码文档 笔记算法已经打包好了  关注公众号即可获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值