美文网首页
常用66算法类型及思路.markdown

常用66算法类型及思路.markdown

作者: 阿木Robert | 来源:发表于2021-04-17 10:21 被阅读0次

数据结构类题目

LinkedList

003-从尾到头打印链表

014-链表中倒数第k个结点

015-反转链表

```java

/**

    输入一个链表,反转链表后,输出新链表的表头。

    */

    public ListNode ReverseList(ListNode head) {

        if(head == null || head.next == null){

            return head;

        }

        ListNode pre=null;//前一个节点

        ListNode next = null;//下一个节点

        while(head !=null){

            next = head.next;//记录当前节点的下一个节点

            head.next = pre;//将当前节点指向前一个节点,完成当前节点反转

            pre = head;//pre往下一个节点邹

            head = next;//当前节点往下走

        }

        return pre;

    }

```

016-合并两个或k个有序链表

025-复杂链表的复制

036-两个链表的第一个公共结点

055-链表中环的入口结点

056-删除链表中重复的结点

Tree

004-重建二叉树

017-树的子结构

018-二叉树的镜像

022-从上往下打印二叉树

023-二叉搜索树的后序遍历序列

024-二叉树中和为某一值的路径

026-二叉搜索树与双向链表

038-二叉树的深度

039-平衡二叉树

057-二叉树的下一个结点

058-对称的二叉树

059-按之字形顺序打印二叉树

060-把二叉树打印成多行

061-序列化二叉树

062-二叉搜索树的第k个结点

Stack & Queue

005-用两个栈实现队列

020-包含min函数的栈

021-栈的压入、弹出序列

044-翻转单词顺序列(栈)

064-滑动窗口的最大值(双端队列)

Heap

029-最小的K个数

Hash Table

034-第一个只出现一次的字符

065-矩阵中的路径(BFS)

066-机器人的运动范围(DFS)

具体算法类题目

斐波那契数列

007-斐波拉契数列

008-跳台阶

009-变态跳台阶

010-矩形覆盖

搜索算法

001-二维数组查找

public boolean Find(int target, int [][] array) {

        if(array == null){

            return false;

        }

        int rows = array.length;

        if(rows == 0){

            return false;

        }

        int cols = array[0].length;

        if(cols == 0){

            return false;

        }

        // 右上

        int row = 0;  //起始行

        int col = cols-1;    //最大列

        while(row<rows && col>=0){    //注意

            if(array[row][col] < target){

                row++;        //注意

            }else if(array[row][col] > target){

                col--;      //注意

            }else{

                return true;

            }

        }

        return false;

    }

006-旋转数组的最小数字(二分查找)

037-数字在排序数组中出现的次数(二分查找)

全排列

027-字符串的排列

动态规划

030-连续子数组的最大和

052-正则表达式匹配(我用的暴力)

回溯

065-矩阵中的路径(BFS)

066-机器人的运动范围(DFS)

排序

035-数组中的逆序对(归并排序)

029-最小的K个数(堆排序)

029-最小的K个数(快速排序)

位运算

011-二进制中1的个数

012-数值的整数次方

040-数组中只出现一次的数字

其他算法

002-替换空格

013-调整数组顺序使奇数位于偶数前面

028-数组中出现次数超过一半的数字

031-整数中1出现的次数(从1到n整数中1出现的次数)

032-把数组排成最小的数

033-丑数

041-和为S的连续正数序列(滑动窗口思想)

042-和为S的两个数字(双指针思想)

043-左旋转字符串(矩阵翻转)

046-孩子们的游戏-圆圈中最后剩下的数(约瑟夫环)

051-构建乘积数组

相关文章

网友评论

      本文标题:常用66算法类型及思路.markdown

      本文链接:https://www.haomeiwen.com/subject/ljggkltx.html