前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7天带你全方位刷爆数据结构与算法,每天一道,高效刷题

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

原创
作者头像
Java程序猿
发布2022-06-09 16:17:40
2090
发布2022-06-09 16:17:40
举报
文章被收录于专栏:Java核心技术Java核心技术

前言

很多算法小白初期刷题比较迷茫,不知道从何刷起从何入手,也不知道怎么使用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、寻找数组的中心索引

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

5、x的平方根

6、三个数的最大乘积

7、两数之和

8、斐波那契数列

9、环形链表

10、排列硬币

11、合并两个有序数组

12、子数组最大平均数

13、二叉树的最小深度

14、最长连续递增序列

15、柠檬水找零

16、三角形的最大周长

17、二叉树遍历

18、省份数量

19、预测赢家

20、香槟塔

21、井字游戏

22、打家劫舍

23、优势洗牌

24、Dota2参议院

算法笔记及代码文档2022力扣算法笔记合集

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1、反转链表
  • 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参议院
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档