基础算法学习与实践

数组&链表

        1. 快慢指针的方式实现判断链表是否有环

栈和队列

        1. 栈实现队列(负负得正)

        2. 队列实现栈(复杂一些)

        3. Java API-Stack是个类;Queue是个接口(LinkedList是其一个实现类)

优先队列

哈希表

树、二叉树、二叉搜索树

二叉树遍历

    DFS - 递归代码

  伪代码:   

        private void dfs(node){

                //1. process for current node

                for(kidNood in node.getKids()){

                    //2. 如果是图,则加上判断该kidNood是否已经访问过

                    dfs(kidNood);

                }

        }

    BFS - 非递归

         private void bfs(){

                  queue.add(root);

                  while(!queue.isEmpty()){

                            currrentNode = queue.poll();

                             //process for currentNode

                            for(kidNood in node.getKids()){          

                                     queue.add()

                            }

                    }    

        }

位运算

    优点,使用二进制计算,计算速度会快于十进制。

    缺点,计算机思维。需要背一些常用的功能。否则比较难于应用。


剪枝

    应用在搜索领域,为了降低计算的空间。设置一些剪枝的条件。深蓝(国际象棋机器人)、AlphaGo 就会应用这种

递归、分治

  - [ ] 贪心算法


  - [ ] 二分查找

  - [ ] 字典树


  - [ ] 动态规划

  - [ ] 并查集

你可能感兴趣的:(基础算法学习与实践)