
数据结构和算法
MardenSSS
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
螺旋打印二维数组(字节三面)
给定一个包含mxn个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]package com.csu.marden;import java.util.ArrayList;import java.util.List;public class Demo2 { public static void main(St...原创 2020-09-11 17:49:40 · 905 阅读 · 0 评论 -
判断链表是否有环
问题:判断给定链表是否有环方法一:哈希表由于哈希表的特殊结构(哈希表的key值无序,不重复),所以可以用来判断是否有重复节点,即环。我们遍历所有结点并在哈希表中存储每个结点的引用(或内存地址)。如果当前结点为空结点 null(即已检测到链表尾部的下一个结点),那么我们已经遍历完整个链表,并且该链表不是环形链表。如果当前结点的引用已经存在于哈希表中,那么返回 true(即该链表为环形链表)。 public static boolean hasCycle(ListNode head) {原创 2020-08-31 17:03:59 · 251 阅读 · 0 评论 -
寻找数组中第k大的数
题目:有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。测试样例:[1,3,5,2,2],5,3返回:2方法一:利用冒泡排序,进行k趟排序,即可查找到第k大的数(每趟冒泡排序都寻找当前序列中的最大值)方法二:利用选择排序,进行k趟排序,即可查找到第k大的数(每趟选择排序都寻找当前序列中的最大值)方法三:利用快速排序的思想,只需找到第k大的数,不必把所.原创 2020-08-30 11:30:45 · 7840 阅读 · 0 评论 -
背包问题详解
(1)01背包问题(2)完全背包问题(3)多重背包问题(4)多重背包问题的二进制优化解(5)混合背包问题(6)二维背包问题(7)分组背包问题package com.csu.marden;import java.util.ArrayList;class Num{ int weight; int value; public Num(int weight,int value){ this.weight=weight; this.value=value; }原创 2020-08-07 15:14:27 · 263 阅读 · 0 评论 -
数据结构和算法(5)-----树
一、哈夫曼树基本介绍给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。 赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。哈夫曼树几个重要概念和举例说明 路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1 结点的原创 2020-07-27 16:30:16 · 316 阅读 · 0 评论 -
算法(1)---八大排序算法
一、选择排序核心思想:从全部序列中选取最小的,与第0个元素交换,然后从第1个元素往后找出最小的,与第一个元素交换。再从第2个元素往后选取最小的,与第二个元素交换,直到最后一个元素。代码://选择排序//核心思想:不断遍历数组的每个位置,并且为每个位置选择当前数组中最小的元素填入。//思路分析:遍历数组的每个位置需要一层for循环,为每个位置遍历选择最小值也需要一层for循环。public static void sort1(int [] arr){ //第一层for循环,遍历数组中的每原创 2020-07-20 14:42:35 · 449 阅读 · 0 评论 -
数据结构和算法(4)-----栈
aaa原创 2020-02-05 21:01:42 · 221 阅读 · 0 评论 -
数据结构和算法(3)-----链表
一、链表(LinkedList)介绍链表是有序的列表,但是它在内存中的存储如下:链表是以节点的方式来存储,是链式存储结构 每个节点包含data域,next域(指向下一个节点) 链表的各个节点不一定是连续存储的 链表分为带头节点和不带头节点的链表,根据实际的需求来确定 单链表(带头节点)的逻辑结构示意图如下所示:二、单链表的应用实例使用带头节点的单向链表实现水浒英雄排行...原创 2020-06-04 16:47:42 · 250 阅读 · 0 评论 -
数据结构和算法(2)-----队列
一、基本介绍队列是一个有序列表,可以用数组或链表来实现 遵循先入先出的原则,即先存入队列的数据,要先取出;后存入队列的数据,要后取出 示意图:二、数组模拟队列思路:队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图,其中maxSize是该队列的最大容量。因为队列的输出,输入是分别从队头和队尾来处理,因此需要两个变量front和rear分别记录队...原创 2020-06-04 16:47:26 · 362 阅读 · 0 评论 -
数据结构和算法(1)-----稀疏数组
一、实际需求编写的五子棋程序中,有存盘退出和继续上盘的功能。分析问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意思的数据,如何在计算机中高效的存储这样的二维数组是一个需要考虑的问题。二、基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素...原创 2020-06-04 16:47:05 · 171 阅读 · 0 评论