![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试:数据结构与算法
。
JAVA小摩托不堵车
每一个不曾起舞的今日,都是对以往时光的辜负。
展开
-
数据结构与算法——动态规划解决0-1背包问题(java实现)
0-1背包问题题目描述:背包总容量为V;有N种物品;weight【】是N种物品的重量二维数组;value【】是N种物品的价值二维数组。/** * 0-1背包问题 * 题目描述:背包总容量为V;有N种物品;weight【】是N种物品的重量二维数组;value【】是N种物品的价值二维数组。 * @author zll * @version 1.0 * @date 2020/6/5 11:30 */public class test02 { public static void main原创 2020-11-23 12:55:29 · 416 阅读 · 0 评论 -
数据结构与算法——找零钱(找硬币)问题
/** * 找硬币问题。有1元、2元、5元三种面值的硬币,求找零N元,最少要找多少张零钱。 * @author zll * @version 1.0 * @date 2020/6/5 9:54 */public class test01 { public static void main(String[] args) { int[] arr = {1, 2, 5}; for(int i=-3;i<=30;i++){ int n原创 2020-11-23 12:56:51 · 1095 阅读 · 0 评论 -
剑指offer——11、二进制中1的个数(java实现)
文章目录题目:求二进制中1的个数0、前言0.1 序0.2 位运算题目:求二进制中1的个数输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。0、前言此题考查二进制的位运算。0.1 序一般情况下,负数的二进制表示以其正数的补码形式表示。原 码一个整数按照绝对值大小转化成的二进制数称为原码例如:00000000 00000000 00000000 00001110 是14的原码。反 码将二进制数按位取反,所得到的新二进制数称为原二进制数的反码。例如:将00000000 000原创 2020-11-23 12:59:13 · 139 阅读 · 0 评论 -
实践——实现java后台返回数据为树结构
实现java后台返回数据为树结构原创 2020-11-23 12:59:01 · 904 阅读 · 1 评论 -
数据结构——树(各种树)
文章目录1、二叉树(1)满二叉树(2)完全二叉树(3)二叉查找树(4)平衡二叉树(AVL树)1、二叉树二叉树:二叉树是每个节点最多有2个子树的一种数据结构。如下图,就是一个二叉树。(1)其中25是根节点。(2)25是15和44的父节点,15和44是25的子节点,15和44是兄弟节点。(3)红框内的结点是叶子结点(没有子节点的结点叫做叶子结点)。另外一个需要我们知道的概念是树的深度(高...原创 2020-11-23 12:58:42 · 894 阅读 · 0 评论 -
剑指offer——13、调整数组顺序,使奇数位于偶数前面。(java实现)
题目调整数组顺序,使奇数位于偶数前面。输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。实现列举三种实现方法。(1)两个队列(先进先出)分别存放奇数和偶数,然后再存放在一个数组中。(2)冒泡排序实现。如果前偶数后奇数,则交换位置。(3)插入排序实现。如果前偶数后奇数,...原创 2020-11-23 13:00:03 · 553 阅读 · 0 评论 -
剑指offer——15、反转链表,输入一个链表,反转链表后,输出新链表的表头。
题目输入一个链表,反转链表后,输出新链表的表头。代码实现迭代法实现。三个指针pre、head、next,迭代实现链表反转。public class test15 { public static void main(String[] args) { ListNode node1 = new ListNode(6); ListNode node2 = ...原创 2020-11-23 13:00:00 · 124 阅读 · 0 评论 -
剑指offer——14、输入一个链表,输出该链表中倒数第k个结点。(java)
题目输入一个链表,输出该链表中倒数第k个结点。解法一共可以有三个解法思路。(1)循环一遍链表得到链表长度length,之后再次循环定位倒数第k个元素。(2)从第一个节点开始遍历,每次都只遍历k个元素,如果第k个元素的next是null,则得到了倒数第k个。(3)第三种就是下面这种,前后两个指针,两个指针之间的长度为k,当前指针到链表尾部的时候,后指针指向的就是倒数第k个。(最优)pu...原创 2020-04-30 22:34:03 · 164 阅读 · 0 评论 -
剑指offer——10、矩形覆盖(java实现)
题目我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:递归解法和普通解法public class test10 { public static void main(String[] args) { int target = 5; R...原创 2020-11-23 12:59:55 · 107 阅读 · 0 评论 -
剑指offer——9、变态跳台阶(java)
题目一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。先自己算一下:n=1的时候,1种跳法。n=2的时候,2种跳法。n=3的时候,4种跳法。n=4的时候,8种跳法。n=5的时候,16种跳法。是有规律的!!!于是:代码(递归解法与普通解法)public class test09 { public static v...原创 2020-11-23 13:01:33 · 148 阅读 · 0 评论 -
剑指offer——8、跳台阶(java实现)
题目一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。递归解法以及普通解法public class test08 { public static void main(String[] args) { int target = 6; JumpFloor1(target); ...原创 2020-11-23 12:59:51 · 135 阅读 · 0 评论 -
剑指offer——7、斐波那契数列(java)递归以及普通解法
题目大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39代码public class test07 { public static void main(String[] args) { int n = 7; Fibonacci(n); } privat...原创 2020-11-23 13:01:24 · 303 阅读 · 0 评论 -
剑指offer——6、旋转数组的最小数字(java)
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。代码:public class test06 { public static void main(Str...原创 2020-11-23 13:01:29 · 117 阅读 · 0 评论 -
剑指offer——3、从尾到头打印链表,输入一个链表,按链表从尾到头的顺序返回一个ArrayList
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。思路:将链表里的值放到Stack栈中,利用栈先进后出的规则。所以在弹栈到ArrayList中,即可。代码如下:import java.util.ArrayList;import java.util.Stack;class test03 { public static void main(String[...原创 2020-11-23 13:01:20 · 188 阅读 · 0 评论 -
数据结构与算法——修塔游戏,使n座高塔中至少有k座高塔的高度相同(java)
题目题目描述:一款修塔游戏:系统中有n座高塔,每座高塔由若干个高度相同的方块堆砌而成。修塔游戏的规则为:(1)每次从最高塔的塔尖拿走一个方块(2)每次在最低塔的塔尖堆砌一个方块小招每次只能完成上述两个动作中的一个动作。游戏的目标是使n座高塔中至少有k座高塔的高度相同,请问小招最少需要多少次才能完成游戏。输入描述:输入共有2行,第一行为n和k(1≤k≤n≤200000 ),第二行为n座...原创 2020-04-30 11:12:42 · 558 阅读 · 0 评论 -
数据结构与算法——随机坐,要求序号2n和序号2n+1的人必须挨着坐,求最小换位置次数(java)
题目题目描述:在一场集体婚礼上,有n对新人需要坐在连续排列的 2n个座位上合影,同一对新人彼此挨着。由于进场时各对新人并未按序入座,请计算最少交换座位的次数,以便使每对新人均可并肩坐在一起。一次交换可选择任意两人,让他们互换座位。全部新人的序号可用 0 到 2n-1 的整数表示,第一对是 (0, 1),第二对是 (2, 3),以此类推,最后一对是 (2n-2, 2n-1)。row[i]指最...原创 2020-11-23 13:01:09 · 1254 阅读 · 0 评论 -
数据结构与算法——动态规划思想解题三角形问题
动态规划的基本思想动态规划解题的时候将问题分解为几个不同的阶段(把原始问题分解为不同的子问题),自底向上计算。每次决策都依赖于当前的状态。我们可以将不同阶段的不同状态存储在一个二维数组中。从这个二维数组中,可以查到到任何一个状态的最优结果。例题题目描述:在一个N层高的金字塔上,以金字塔顶为第一层,第i层有i个落点,每个落点有若干枚金币,在落点可以跳向左斜向下或向右斜向下的落点。若知道金字...原创 2020-11-23 13:01:03 · 272 阅读 · 0 评论 -
数据结构与算法——java二分查找算法(递归+非递归实现)
文章目录二分查找算法1、思想2、java的递归和非递归实现二分查找算法1、思想有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功。实现思路:(1)将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;(2)否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一...原创 2020-11-23 13:00:49 · 407 阅读 · 0 评论 -
容器——ConcurrentHashMap的底层实现原理
文章目录ConcurrentHashMap的底层实现原理1、HashMap线程不安全2、HashTable效率低下3、ConcurrentHashMap的底层实现原理3.1JDK1.7中的ConcurrentHashMap3.2JDK1.8中的ConcurrentHashMapConcurrentHashMap的底层实现原理1、HashMap线程不安全HashMap是线程不安全的。Hash...原创 2020-11-23 13:02:54 · 184 阅读 · 0 评论 -
java学习——数据结构与算法——排序——3、冒泡排序
文章目录冒泡排序1、冒泡排序思路2、冒泡排序实现(传统版与优化版)冒泡排序1、冒泡排序思路基本原理是:(1)比较相邻的两个元素,如果前面的比后面的大,则交换两个元素;(2)对每每相邻的元素都进行这样的比较操作,从开始的一对到最后一对,这样最后的元素会是本次遍历完剩下的最大的元素;(3)针对所有的元素执行以上步骤,除了已经指派出来的最大的元素(或序列,序列排在了最末尾)(4)重复以上步...原创 2020-04-07 22:32:21 · 104 阅读 · 0 评论 -
java学习——数据结构与算法——排序——5、快速排序
文章目录快速排序1、快速排序思路2、快速排序实现快速排序1、快速排序思路基本原理是:(1)比较相邻的两个元素,如果前面的比后面的大,则交换两个元素;(2)对每每相邻的元素都进行这样的比较操作,从开始的一对到最后一对,这样最后的元素会是本次遍历完剩下的最大的元素;(3)针对所有的元素执行以上步骤,除了已经指派出来的最大的元素(或序列,序列排在了最末尾)(4)重复以上步骤直至排序完成。...原创 2020-04-08 14:28:21 · 84 阅读 · 0 评论 -
java学习——数据结构与算法——排序——2、插入排序
文章目录插入排序1、插入排序思路2、插入排序实现插入排序1、插入排序思路其基本原理是:(1)处世术假设第一个记录自成一个有序序列,其余记录为无序序列;(2)接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到之前的有序序列之中,直到最后一个数插入到有序序列为止。2、插入排序实现public class test01 { public static void main(S...原创 2020-04-07 21:32:21 · 126 阅读 · 0 评论 -
java学习——数据结构与算法——排序——1、选择排序
文章目录选择排序1、选择排序思路2、选择排序实现选择排序1、选择排序思路选择排序是一种简单直观的排序算法。其基本原理是:(1)经过第一次比较后得到最小的记录,然后将记录与第一个位置的记录进行交换;(2)接着对不包括第一个位置的其他记录进行第二轮比较,得到最小的记录并与第二个位置的记录交换;(3)重复这个过程,直到进行比较的记录只有一个为止。2、选择排序实现public class ...原创 2020-04-07 21:06:39 · 89 阅读 · 0 评论 -
java学习——数据结构——两个队列实现栈、两个栈实现队列
文章目录两个队列实现栈、两个栈实现队列1、两个队列实现栈2、两个栈实现队列两个队列实现栈、两个栈实现队列1、两个队列实现栈2、两个栈实现队列...原创 2020-04-04 21:57:21 · 192 阅读 · 0 评论 -
java学习——数据结构——二叉树的递归与非递归遍历方法
文章目录二叉树的遍历1、构造树2、前序遍历(递归+非递归)3、中序遍历(递归+非递归)4、后序遍历(递归+非递归)二叉树的遍历1、构造树public static void main(String[] args) { // 初始化树 TreeNode root = new TreeNode(6); TreeNode node1_1 = new TreeNode(2); T...原创 2020-04-04 20:36:19 · 148 阅读 · 0 评论