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

数据结构类题目

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-构建乘积数组

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 11,123评论 0赞 11
  • 彩排完,天已黑
    刘凯书法阅读 4,765评论 1赞 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 131,916评论 2赞 7

友情链接更多精彩内容