随笔分类 - 2结构与算法
结构与算法是计算世界的基石,而算法更是计算世界里迷人的明珠。
摘要:数据结构和算法,是软件组件的基本组成结构,是解决很多疑难编程问题的强有力的法宝,也是程序员装备自身编程技能的一件利器。
阅读全文
摘要:构造与使用分离,即是在构造的时候抽取所需的必要信息,而在使用的时候去构建所需要功能,而不是边构建边使用,将构建与使用耦合在一起,后续如果有需求变更,改动就会比较麻烦。
阅读全文
摘要:位是程序世界的本源。位向量(位的顺序数组)的空间效率以及位运算的高效,使得位运算深受资深程序员的喜爱。位运算广泛应用于科学计算、哈希计算、存在性检测、状态位组合标识等场景。掌握位运算,就像携带了一把匕首,能够有效解决不少问题。
阅读全文
摘要:在本文中,我们通过一个二叉树的路径寻找面试题,讨论了递归和非递归解法,探讨了非递归过程中遇到的问题,模拟了二叉树的回溯,对于理解二叉树的访问是很有益的。而对于回溯算法的理解,锻炼了非线性思维。技术人的精神,就是追根究底,把一个事情彻底弄清楚吧!
阅读全文
摘要:通过编写程序,从 JSON 串中自动生成对应的对象模型,使得这个过程自动化,让类似事情的效率成倍的增长了。让效率成倍增长的有效之法就是提升代码和方案的复用性,自动化手工处理。
阅读全文
摘要:本文展示了一种方法, 将具有内在关联性的JSON字符串转成对应的嵌套对象。 当处理复杂业务关联的数据时,相比过程式的思维,转换为对象的视角会更容易处理和使用,代码也更容易理解和维护。顺便踩了BeanUtils.populate的一个小坑:当使用 BeanUtils.populate 将 map 转为对象时,对象的属性命名要尤其注意: 第二个字母不能是大写!
阅读全文
摘要:本文讲解了如何使用kNN算法来实现识别潜在续费商家。kNN算法依赖于模型的正确性。如果分类标签值与样本特征值有非常密切的关联,使用简单的kNN算法即可得到有效的结果,而且不限于特定的应用领域。只要能够将领域问题转化为样本特征值矩阵,就能使用 kNN 算法来进行求解。
阅读全文
摘要:一个略复杂的数据映射聚合示例。演示了Java8Map的用法,代码重构及Function编程。
阅读全文
摘要:使用Java语言递归地将嵌套Map里的字段名由驼峰转下划线。通过此例可以学习如何递归地解析任意嵌套的List-Map容器结构。难度:初级
阅读全文
摘要:使用Python在给定整数序列中找到和为100的所有数字组合。可以学习贪婪算法及递归技巧。难度:初级
阅读全文
摘要:迷宫问题是栈的典型应用,栈通常也与回溯算法连用。在回溯算法的实现中,通常要使用栈来保存行进中的位置及选项。本文使用栈的数据结构及相应的回溯算法实现迷宫创建及求解,带点JavaGUI 的基础知识。 难度:中级
阅读全文
摘要:通过使用Python编写一个解析Json结构对比的小工具,来提炼编程求解的通用步骤和技巧。 编程求解问题: 确定问题与求解方向 -> 结构解析与递归 -> 算法设计 -> 编程与测试 -> 总结。难度: 初级
阅读全文
摘要:使用减一技术生成N个自然数的排列及N个数的集合的幂集。 减一技术,与二分搜索一样,是一种通用算法设计技术。它是分治法的一种特殊形式,通过建立问题实例P(n) 与问题实例P(n-1)的递推求解关系式而实现。Java实现。难度: 初级
阅读全文
摘要:Java实现动态规划法求解0/1背包问题。难度:初级
阅读全文
摘要:算法,即计算的方法,使用计算的思想、方法、工具和技术来实现问题求解的思路和途径。计算机提供了计算的能力和硬件设施;算法则提供了计算的思想和软件技术,更好地发挥计算机的潜能。总结算法,应用算法。算法,当之无愧是计算机科学的灵魂和基石。
阅读全文
摘要:使用位图结构生成真值组合。Java实现。难度:初级。
阅读全文
摘要:《算法设计与分析基础》(第2版),(美) Anany Levitin 著, 潘彦译。总体来说,可读性很强,趣味性强,实用性尚可,在理论性和实用化之间进行了很好的平衡和折衷,有很好的启发作用。如果你希望有一本容易理解的而又具备一定深度的算法入门书籍,那么,本书可算是上佳的首选。
阅读全文
摘要:使用位图技术实现N个互不相等的数的排序。分别使用Java和C实现。难度:初级。
阅读全文
摘要:实现一个比较实用的二叉查找树,其中包括动态的插入、删除操作;查询给定关键字、最小关键字、最大关键字;获取二叉树的有序列表(用于排序)等。难度:初级。
阅读全文