数据结构与算法
未读
排序算法——选择排序
选择排序:双重循环遍历数组,每经过一轮比较,找到最小元素的下标,,将其交换至首位。 int[] arr = {3, 5, 4, 2, 1};
@Test
public void selec
数据结构与算法
未读
排序算法——冒泡排序
什么是冒泡排序 冒泡排序的英文Bubble Sort,是一种基础的交换排序。 这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。 举个例子,将一个无需数列5, 8, 6, 3, 9, 2, 1, 7,从小到大排序 排序流程图 最外层的 for 循环每经过一轮,剩余
数据结构与算法
未读
力扣学习笔记——插入排序
什么是插入排序 插入排序就像扑克牌中,我们习惯将抓到的牌进行排序,每次摸一张牌,就将它插入手上已有的牌中合适的位置,逐渐完成整个排序。 交换法插入排序 交换法:在新数字插入过程中,不断与前面的数字交换,直到找到自己合适的位置。 </
数据结构与算法
未读
力扣学习笔记——283. 移动零
解题思路 这题主要考察的是对题目的理解,使用双指针,什么时候交换? 当数字不为0时,进行交换 通过把不为0的数字移到左边,就可以实现题目效果,图解如下: 实现代码 class Solution {
public void
数据结构与算法
未读
力扣学习笔记——328. 奇偶链表
解题思路 使用了链表交换的概念,引入的temp节点作为链表交换并确定交换起始位置。 图解: 实现代码 class Solution {
public ListNode swapPairs(ListNode head)
数据结构与算法
未读
力扣学习笔记——328. 奇偶链表
解题思路 这题主要运用了双指针之间的交替,画图理解的话就很简单了: 实现代码 class Solution {
public ListNode oddEvenLis
数据结构与算法
未读
力扣学习笔记——876. 链表的中间结点
解题思路 经典的快慢针案例,当快指针走到头的时候,慢指针就会正好在链表中间节点 实现代码 class Solution {
public ListNode middleNode(ListN
数据结构与算法
未读
力扣学习笔记——138. 随机链表的复制
解题思路 使用递归回溯的特性,可以直接将一个新结点完美拼接,不论是否初始化。 图解: 实现代码 class Solution {
Map<Node, Node> cacheNode = new HashMap<>();
数据结构与算法
未读
力扣学习笔记——430. 扁平化多级双向链表
解题思路 本题主要考验的是DFS(深度优先遍历) 懒了,自己拖着看吧。。。 图解: 实现代码 /*
// Definition for a Node.
class Node {
public int val;
public Node prev;
public Node nex