随笔分类 - 算法相关
还是要搞一些算法总结的
摘要:本文主要收录一些使用golang做算法题的资料以及自己在做题中笔记 leetcode做多之后,会发现其套路,就像做数学题一样。不外乎数组,树,图,二分法,深度遍历,广度遍历,回溯等,可以说是套路满满,做题注意总结,往往能举一返三。 还有就是多画示意图,这和我们平时解数学题没有两样。 基础知识储备 旋
阅读全文
摘要:日常生活中的数独游戏,转魔方游戏,n皇后问题,都是比较难的问题,比较复杂的算法大都在处理图数据,比如图搜索,图中任意两点的最短距离问题,首先看一下这个java算法表达的是什么算法。 List<List<Integer>> res = new ArrayList<>() void dfs(int id
阅读全文
摘要:基本的排列组合问题,就是高中数学的内容,怎么用编程语言输出所有排列呢?我们手写的过程,它应该是一个递归的过程,而不适合用for/wihle循环。如果数据结构学的扎实,可以发现这是一个树结构,遍历所有的叶子节点就能够得到全排列。说到递归,应该向大家隆重介绍一下数学归纳法的思想,应为都有一个问题规模n。
阅读全文
摘要:看了算法设计相关的书,写伪码是算法设计的基本功。解决一个问题,看似最终是用具体的编程语言实现的,但是用伪码最能表现其思想,好的伪码,可以把问题阐述的非常简单清楚,代码就水到渠成了。比如插入排序算法,我们可以写一个c++实现算法,但是用一个伪码更能体现出其过程。 同时,写设计算法时,要保证其是理论正确
阅读全文
摘要:前同事离职了,向他请教了一下应该怎么工作,然后跳槽。他说每天抽出一小时做一下oj,然后多看看资深员工写的代码。这两点都很重要吧。在办公室听领导谈话,招聘时做oj也是常规手段,因为简单有效,没有谁有那么多时间。做oj就是解决一个小问题,这虽然对业务理解没有什么益处,但你当你处理业务时,就会发现熟练的编
阅读全文
摘要:对于树 遍历方法: 1.递归遍历,而递归遍历又分为前序,中序,后续三种,这样概率清晰之后还是很容易理解的。其中层次遍历我们按照树结构,很容易给出树的遍历方法,但是用程序语言去描述这个过程,要充分应用这种结构。 public void traval(TreeNode node){ if(node ==
阅读全文
摘要:public int maxProfit(int k, int[] prices) { int pl = prices.length; int nothing = 0, share = Integer.MIN_VALUE; for(int i = 0; i < pl; i++) { int tmp
阅读全文
摘要:1.回溯算法:来一个简单直白的伪码 path; for e in list{ // 前进一步 path.push(e); {...} // 探索 // 再退回去 paht.pop(e); } 可以看到,回溯算法和stack有很深的关系,典型的回溯算法如打印所有根节点到叶子节点的路径。 public
阅读全文
摘要:数组,栈,队列,树,图都是我们解决问题的工具,这些教材中都有讲,还有一些约束性更强的数据结构,比如单调栈,单调队列,优先级队列等 1、单调栈(队列): 即元素要入栈,必须满足使栈数据保持单调的特性,否则不能入栈,或者弹出原有元素。 单调队列同理,也可分为不能入队,或者原有元素出队。 这种结构一般用于
阅读全文