数据结构和算法
南丘xf
好记性不如烂笔头——1枚昆明程序猿
展开
-
Java基础——数据结构和算法
1、Java中常见的数据结构数据结构优缺点.png理解数据结构和算法对于编程是相当重要的,选择适当的数据结构来解决相应的问题,会极大的提高程序的性能。比如三目运算:<表达式A> ? <表达式B> : <表达式C>;A为真,则执行B,并返回表达式B的结果;A为假,则执行C,并返回表达式C的结果。必要时,进行嵌套,可取代大部分的if和else。...原创 2019-03-06 15:28:00 · 138 阅读 · 0 评论 -
约瑟夫环问题解法
问题描述:N个人围成一圈,从第一个人开始报数,报m数的人出圈,剩下的人继续从1开始报数,报到m数的人再出圈;如此往复,直到所有人出圈。(模拟此过程,输出出圈的人的序号)public static void yesefu(int totalNum, int countNum) { // 初始化人数 ArrayList<Integer> start = new Array...原创 2019-10-23 15:38:37 · 825 阅读 · 0 评论 -
二叉树相关算法常见笔试题
创建二叉树上一篇中已经提到:https://blog.csdn.net/weixin_39309402/article/details/1013496761、如何计算二叉树叶子节点(没有子结点[即度为0]的结点称为叶子结点,简称“叶子”)的个数// 叶子节点的个数(递归算法) public static int getNodeNumLeafRec(TreeNode root) { i...原创 2019-10-17 14:41:05 · 977 阅读 · 0 评论 -
如何创建一个简单的二叉树(TreeNode)?
我们都知道,数据结构最典型的就是数组和链表,在《算法图解》一书中,详细介绍了数组和链表的优缺点:数组查询快(下标),但删除或者插入就比较慢(遍历)链表与之相反,删除和插入元素很快,但查找很慢所以二叉树就应运而生了,它结合二者的优点,取二家之长,但是在实际编程中,大多时候,根本用不到二叉树(实际编程中,我从来没用过二叉树,但是面试可能会问啊,所以趁有空学习总结下),网上找了一下二叉树的应用场...原创 2019-10-17 10:58:06 · 9695 阅读 · 0 评论 -
String常见笔试题(算法)
1、统计最长不重复子串(利用HashMap是最简单的)public static String lengthOfLongestSubstring(String s) { int star = 0; int head = 0; int ans = 0; Map<Character, Integer> hashMap = new HashMap<>();...原创 2019-10-17 10:04:42 · 427 阅读 · 0 评论 -
背包01问题,动态输出各种组合
今天一个学安卓的朋友问了一个很有意思的问题:你知道什么是背包01问题吗?说实话,在这之前还真不知道,特地查了一下,背包01问题是这样描述的:有编号分别为a、b、c、d、e的五件物品,重量分别是2kg、2kg、6kg、5kg、4kg,分别可以卖6w、3w、5w、4w、6w,现在给你个承重为10kg的背包,如何让背包里装入的物品价值最大化(卖的钱最多)?背包01问题是动态规划算法最经典的例子,...原创 2019-10-08 16:18:48 · 290 阅读 · 0 评论 -
记录一次主单明细分包解决思路
项目背景:建行收到财政发来的公务卡垫款xml报文存库,报文格式分主单和明细,主单不包含收款账号,明细单包含收款账号,即一个主单包含多个明细(明细确定不超过500,但具体多少,未知)!建行公务卡支付需按照明细支付,支付完成以后,需按主单生成清算单到人行做清算,也是主单+明细的情况,但是明细单有一个要求,不能超过500,超过500必须分包,而且必须保证一个主单的明细单必须在一个清算单中,不能存在一个主...原创 2019-06-26 15:45:00 · 198 阅读 · 1 评论 -
栈(Stack)基础知识及常见面试题
说到栈,我们需要先了解这些概念:寄存器:最快的存储区, 由编译器根据需求进行分配,程序中无法控制。栈:存放基本类型的变量数据和对象的引用,但栈不存对象本身,对象本身存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)堆:存放所有new出来的对象。静态域:存放静态成员(static定义的)常量池:存放字符串常量和基本类型常量(public static final)。非RA...原创 2019-06-10 11:56:00 · 606 阅读 · 0 评论 -
Java实现自定义链表(单向、双向、循环)
为了讲解调用别人接口获取List,需要判断其内部实现是链表实现还是数组实现以提高性能篇幅时,需要一个自定义链表实现,我们今天就单独讲解一下如何自定义一个链表。我们都知道,链表与数组不同,链表是由节点组成的,而节点是由数据域+引用域组成的(节点与节点之间通过引用域进行链接)链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。相比于线性表顺序...原创 2019-09-29 18:20:14 · 418 阅读 · 0 评论