算法与数据结构
private_pig
这个作者很懒,什么都没留下…
展开
-
链表
链表链表是由节点构成的,这个节点我们可以通过建立一个类来实现它。这个类我们通常选用内部类。class TestLink{ class Entry{ int data; Entry next; public Entry() { next = null; } public Entr...原创 2018-04-27 01:23:41 · 33501 阅读 · 0 评论 -
算法(1)——流程图和DNS图
图来自——《java常用算法手册》一、算法的实现1.流程图表示2.N-S图3.伪代码表示二、数据结构1.数据结构的分类1)线性有且仅有一个开始节点和一个终端节点 所有节点最多只有一个直接前驱和直接后继节点2)非线性一个节点可能有多个直接前驱和直接后继节点实际应用中,数组、广义表、树结构和图结构等结构都是非线性结构2.数据结构的存储方式...原创 2019-04-03 22:23:44 · 2332 阅读 · 0 评论 -
leetcode——442
题目:给定一个整数数组 a,其中1 ≤ a[i] ≤n(n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]解题思想: 题目有一个重要条件1<a[i]<n,这个条件我们可以得到如果a[i]这个数...原创 2019-05-07 21:39:35 · 522 阅读 · 0 评论 -
A*算法之八数码问题(java代码)
一、问题描述 一个九宫格,有八个数字1-8已经确定位置,剩下一个空格以0表示,0可以和上下左右的数字交换位置。如果给定一个初始状态1,一个目标状态2,求解从状态1到状态2最少要移动多少步二、算法 公式表示为: f(n)=g(n)+h(n),其中:f(n) 是从初始状态经由状态n到目标状态的代价估计,称作估计函数 d(n) 是在状态空间从初始状态到状态n的实际...原创 2019-05-12 17:49:45 · 10534 阅读 · 5 评论 -
A*算法之最短路径(java代码)
图解代码比较接口package com.hyh.java_algorithm;public interface MyCompare { public boolean isLarger(MyCompare m2); public boolean isSmaller(MyCompare m2); public boolean isEqual(M...原创 2019-05-12 20:43:22 · 1191 阅读 · 1 评论 -
循环队列 java实现
1.队列首先我们知道队列是尾进头出,所以如果我们用数组实现队列会出现一下这种情况。这时候我们想要插入就不行了,会数组溢出,但是不插入又会浪费两格空间。所以这时候就有了循环队列。2.循环队列如图把数组假象成一个环,为了方便判断环 是否 满 和 空,空出一个位置(可以对比最右边队满的两幅图),这样就可以根据公式:rear=front 判断是否为空(rear...原创 2019-06-23 22:35:27 · 2122 阅读 · 0 评论 -
两个栈实现一个队列(java)
1.队列队列是尾进头出,所以下面的出队顺序是1234,如果后面再进567出队的顺序是1234567 2.栈栈是后进先出,结合这一特点,我们可以用两个栈模拟一个队列。用一个栈来push,然后把他pop到另一个栈里面,按照栈后进先出的特点,pop完后会形成右面那幅图。如下图 ...原创 2019-06-24 11:07:36 · 470 阅读 · 0 评论 -
两个队列实现一个栈
1.栈栈是后进先出 2.队列我们现在想用连个队列来第一个输出4怎么办,大家很容易就想到按照下图的方法把队列中的123移到另一个队列,然后第一个队列只剩一个值4,pop这个值就行了。当最后一个4pop后,你会发现此时队列1又为空了。所以编程的时候要注意无论是push前后,还是p......原创 2019-06-24 15:54:21 · 180 阅读 · 0 评论 -
0-1背包问题整理java代码
0-1背包问题讲解:https://www.cnblogs.com/arsenalfaninecnu/p/8945548.html代码/* *最多可以放8公斤的物品物品1:3公斤 价值4元物品2:5公斤 价值4元物品3:2公斤 价值3元物品4:6公斤 价值5元物品5:4公斤 价值3元0 0 0 0 0 0 0 ...原创 2019-09-02 10:33:22 · 1053 阅读 · 2 评论