一万年来谁著史,三千里外欲封侯。这篇文章主要讲述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以内的素数【7天带你全方位刷爆数据结构与算法,每天一道,高效刷题】
文章图片
3、寻找数组的中心索引
文章图片
4、删除排序数组中的重复项
文章图片
5、x的平方根
文章图片
6、三个数的最大乘积
文章图片
7、两数之和
文章图片
8、斐波那契数列
文章图片
9、环形链表
文章图片
10、排列硬币
文章图片
11、合并两个有序数组
文章图片
12、子数组最大平均数
文章图片
13、二叉树的最小深度
文章图片
14、最长连续递增序列
文章图片
15、柠檬水找零
文章图片
16、三角形的最大周长
文章图片
17、二叉树遍历
文章图片
18、省份数量
文章图片
19、预测赢家
文章图片
20、香槟塔
文章图片
21、井字游戏
文章图片
22、打家劫舍
文章图片
23、优势洗牌
文章图片
24、Dota2参议院
文章图片
算法笔记及代码文档已经打包好了
文章图片
推荐阅读
- 汇编语言入门-总结
- 设计模式——单例模式
- opencv 图像金字塔(python)
- python与matlab一些常用函数互转
- 超详细的FFmpeg安装及简单使用教程
- OpenHarmony Camera组件架构分析以及拍照流程源码解析
- Windows系统中,如何快速找到端口被占用的进程()
- 设计模式基础入门
- 技术分享 | 被测系统架构与数据流分析