5

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

 1 year ago
source link: https://blog.51cto.com/u_14994509/5370713
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

1、反转链表

反转一个单链表:

输入: 1->2->3->4->5 
输出: 5->4->3->2->1

方法1:

迭代,重复某一过程,每一次处理结果作为下一次处理的初始值,这些初始值类似于状态、每次处理都会改变状态、直至到达最终状态。

从前往后遍历链表,将当前节点的next指向上一个节点,因此需要一个变量存储上一个节点prev,当前节点处理完需要寻找下一个节点,因此需要一个变量保存当前节点curr,处理完后要将当前节点赋值给prev,并将next指针赋值给curr,因此需要一个变量提前保存下一个节点的指针next。

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

1、将下一个节点指针保存到next变量 next = curr.next

2、将下一个节点的指针指向prev,curr.next = prev

3、准备处理下一个节点,将curr赋值给prev

4、将下一个节点赋值为curr,处理一个节点

方法2:

递归:以相似的方法重复,类似于树结构,先从根节点找到叶子节点,从叶子节点开始遍历大的问题(整个链表反转)拆成性质相同的小问题(两个元素反转)curr.next.next = curr将所有的小问题解决,大问题即解决

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

只需每个元素都执行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天带你全方位刷爆数据结构与算法,每天一道,高效刷题_链表_03

3、寻找数组的中心索引

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

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

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

5、x的平方根

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

6、三个数的最大乘积

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

7、两数之和

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

8、斐波那契数列

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

9、环形链表

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

10、排列硬币

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

11、合并两个有序数组

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

12、子数组最大平均数

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

13、二叉树的最小深度

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

14、最长连续递增序列

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

15、柠檬水找零

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

16、三角形的最大周长

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

17、二叉树遍历

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

18、省份数量

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

19、预测赢家

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

20、香槟塔

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

21、井字游戏

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

22、打家劫舍

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

23、优势洗牌

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

24、Dota2参议院

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

算法笔记及代码文档已经打包好了

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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK