zoukankan      html  css  js  c++  java
  • 常用算法列举

    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. 快慢指针

    参见快慢指针

  • 相关阅读:
    java简单学习笔记20181228
    java简单学习笔记20181226
    java简单学习笔记20181225
    java简单学习笔记20181224
    java简单学习笔记20181221
    java简单学习笔记20181219
    java简单学习笔记20181218
    java简单学习笔记20181217
    java简单学习笔记201812013
    java简单学习笔记20181205
  • 原文地址:https://www.cnblogs.com/jason0529/p/13855486.html
Copyright © 2011-2022 走看看