算法
青春季风暴
aiIT
展开
-
查找单链表中的倒数第k个结点
问题: 编写代码,查找单链表中的倒数第K个节点 思路分析: 1.编写一个方法,接收head节点,同时接收一个index 2. index表示是倒数第index个节点 3.先把链表从头到尾遍历,得到链表的总的长度getLength 4. 得到size 后,我们从链表的第一个开始遍历(size-index)个, 就可以得到 5.如果找到了,则返回该节点,否则返回null 代码: public static HeroNode findIastIndexNode(HeroNode h..原创 2020-10-14 19:50:37 · 317 阅读 · 0 评论 -
数据结构与算法-链表
一、链表介绍: 链表是有序列表,存储结构如下: 总结如下: 1)链表是以节点的方式来存储,是链式存储 2)每个节点包含data域,next域:指向下一个节点. 3)如图:发现链表的各个节点不一定是连续存储. 4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定 单链表(带头结点)逻辑结构示意图如下: 二、应用实例 使用带head头的单向链表实现–水浒英雄排行榜管理完成对英雄人物的增删改查操作 1)第一种方法在添加英雄时,直接添加到链表的尾部 思路分析示意图: ..原创 2020-10-14 19:41:18 · 1752 阅读 · 0 评论 -
数据结构与算法-队列
队列介绍 1、队列是一个有序列表,可以用数组或是链表来实现 2、遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 示意图:(使用数组模拟队列示意图) 数组模拟队列 队列本身是有序列表,如使用数组的结构来存储队列的数据结构,则队列数组的生命如下图,其中maxSize是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理的,因此需要两个变量front及rear分别记录队列前后端的下标,front会随着数据输出而变化,而rear则是随着数据输入而改变,如图所...原创 2020-09-21 21:19:00 · 215 阅读 · 0 评论 -
数据结构与算法-稀疏数组
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 1) 记录数组一共有几行几列,有多少个不同的值 2) 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 稀疏数组举例说明: 转换前的二维数组: 转换后的稀疏数组: 稀疏数组的应用实例: 1)使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等) 2)把稀疏数组存盘,并且可以从新恢复原来的二维数组数 3)整体思路分析 ...原创 2020-09-21 20:52:25 · 193 阅读 · 0 评论 -
五大常用算法:分治、动态规划、贪心、回溯和分支界定
分治算法 一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计...转载 2018-10-14 21:32:06 · 325 阅读 · 0 评论 -
排序算法
目录 冒泡排序 鸡尾酒排序 选择排序 插入排序 二分插入排序 希尔排序 归并排序 堆排序 快速排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序...转载 2018-10-27 20:21:25 · 156 阅读 · 0 评论