数据结构
XindaBlack
最菜搬砖工
展开
-
2020秋招_动态规划之背包问题学习总结
文章目录0-1背包问题0-1背包不超过背包体积下的最大重量0-1背包恰好装满问题完全背包问题多重背包二进制优化方法背包问题九讲0-1背包问题O(V×N)O(V\times N)O(V×N)有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。状态转移方程:dp[i][j]dp[i][j]dp[i][j]表示前 iii 件物品,容量为 jjj 的背包,可获得最大的总价值。dp[i][j]=max(dp[i−1][j],dp[i−1][j原创 2020-09-10 11:10:15 · 241 阅读 · 0 评论 -
数据结构和算法笔记(二):位运算、栈、队列
目录位运算位异或相关练习位运算位异或异或的性质:两个数字异或的结果a^b是将 a 和 b 的二进制每一位进行运算,得出的数字。 运算的逻辑是如果同一位的数字相同则为 0,不同则为 1。异或的规律:(1)任何数和本身异或则为0;(2)任何数和 0 异或是本身;(3)异或满足交换律。 即 a ^ b ^ c ,等价于 a ^ c ^ b。只出现一次的数字(其余都出现两次) -> ...原创 2020-04-21 23:16:03 · 214 阅读 · 0 评论 -
数据结构和算法笔记(一):二叉树、堆、链表、双指针
时间复杂度常见数据结构的查找、插入、删除时间复杂度二叉树(Binary Tree)存储结构二叉树的存储结构有两种,顺序存储结构和链式存储结构。PS:链式存储结构的二叉树极端情况下会退化成线性链表。几种特殊二叉树完全二叉树满二叉树二叉搜索树/二叉排序树平衡二叉树/AVL树红黑树STL里哪些容器用到二叉树存储?…未完待续堆(heap)堆以完全二叉树的形式表示,用队列(数组...原创 2020-04-21 00:49:17 · 351 阅读 · 0 评论 -
Java实现静态链表
## Java实现静态链表 ##初学数据结构,花了一天理解了如何用Java写静态链表,可以实现插入和删除操作,关键点代码里已经都注释了。然后经过格式化输出,展示了游标、数据和数组下标的变化。由于Java里没有结构体,使用引用类型数组代替结构体数组。如果代码中有什么地方还需改进,希望多多给予我宝贵的意见。。/*实现静态链表结点分为两部分:游标(类似于动态链表中的指针)、数据域分为了...原创 2018-09-01 21:14:43 · 1028 阅读 · 0 评论 -
汉诺塔递归实现——Java代码
在递归中不断重复以下步骤: 若要将N层从X转移到Z,则需要将N-1层从X转移到Y,再将第N层从X转移到Z,最后将N-1层转移到Z;将N层从从X转移到Y、Y转移到Z、Y转移到X、Z转移到X、Z转移到Y也类似。 返回条件:N == 1时,第N层直接转移到Z。(从X转移到Z情况)import java.util.Scanner;public class HanoiTower { pr...原创 2018-09-12 13:06:09 · 890 阅读 · 0 评论 -
逆波兰计算器——Java实现
实现逆波兰计算器,主要通过以下三个步骤: 1. 将输入的字符串(表达式)按每个数值、操作符单独存储在字符串数组infix中。例如infix中的字符串可以是“-2.3333”、“1.2138”、“+”、“*”、“(”等等。 2. 通过栈和操作符的优先级的比较,将中缀表达式infix转换为后缀表达式postfix。 3. 通过栈,计算posfix的结果。下面是具体实现的代码:imp...原创 2018-09-10 19:23:19 · 958 阅读 · 0 评论