常用算法列举

Posted jason0529

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用算法列举相关的知识,希望对你有一定的参考价值。

1. 深度优先遍历

使用场景:常见于各种组合,树遍历,前序遍历、中序遍历、后续遍历

private void dfs(int[] arr, int target,int begin, Deque<Integer> path, Set<List<Integer>> res) {
     if ( path.size()== target) {
        res.add(new ArrayList<>(path));
        return;
    }else if(begin>arr.length){
        return;
    }
    for (int i = begin; i < arr.length; i++) {
        path.add(arr[i]);
        dfs(arr,target,i+1,path,res);
        path.removeLast();
    }
}

2. 广度优先遍历

常见于树遍历,树层级,节点next指针等场景

public List<List<Integer>> levelOrderBottom(TreeNode root) {
 List<List<Integer>> levelOrder = new LinkedList<List<Integer>>();
        if (root == null) {
            return levelOrder;
        }
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(root);
        while (!queue.isEmpty()) {
            List<Integer> level = new ArrayList<Integer>();
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                TreeNode node = queue.poll();
                level.add(node.val);
                TreeNode left = node.left, right = node.right;
                if (left != null) {
                    queue.offer(left);
                }
                if (right != null) {
                    queue.offer(right);
                }
            }
            levelOrder.add(0, level);
        }
        return levelOrder;


    }

3. 滑动窗口

常见于求最长连续字符、累计值最大等场景,

4. 中心扩展

回文字符串

5. 动态规划

6. 冒泡排序

7. 插入排序

8. 哈希表

9. 二分法

10. 递归

11. 快慢指针

参见快慢指针

以上是关于常用算法列举的主要内容,如果未能解决你的问题,请参考以下文章

常用编程思想与算法

c#代码片段快速构建代码

列举处理wifi室内定位所需要的技术

这些常用算法,你知道它们都被用在哪里吗(上)

计算机视觉常用算法讲解

C#常用代码片段备忘