数组
顺时针打印矩阵(顺时针螺旋打印二维数组)
把数组排成最小的数(思维排序,Comparator)
第一个只出现一次的字符(hashmap/桶计数)
数组中只出现一次的数字(HashMap)
数组中重复的数字(HashMap/桶计数)
和为S的两个数字(双指针)
扑克牌顺子(判定模拟)
构建乘积数组(前缀积、后缀积)
字符流中第一个不重复的字符(HashMap/桶计数)
模拟
把字符串转换成整数(模拟,注意防止溢出)
表示数值的字符串(判断类模拟)
数组中的查找(二分思想)
二维数组中的查找(二分思想)
旋转数组的最小数字(二分)
数字在排序数组中出现的次数(两次二分)
字符串
替换空格(StringBuffer、String语法 replace)
字符串的排列(字符串的全排列,next_permutation实现)
左旋转字符串(substring拼接)
翻转单词顺序列(split分割)
链表
从尾到头打印链表(ArrayList)
链表中倒数第k个结点(快慢指针)
反转链表(头插法)
合并两个排序的链表(尾插法)
复杂链表的复制(三步法:复制、赋值、拆链
两个链表的第一个公共结点(神仙思路)
链表中环的入口节点(数学推导+双指针)
删除链表中重复的结点(头结点+双指针)
树
重建二叉树(先序中序还原树)
二叉搜索树的后序遍历序列(递归判定)
二叉树中和为某一值的路径(dfs,二维ArrayList及其排序)
二叉搜索树与双向链表(妙,右根左的中序遍历)
二叉树的深度(dfs)
平衡二叉树(简单判断,左右子树高度差不超过1)
二叉树的下一个结点(模拟)
对称的二叉树(递归判定)
把二叉树打印成多行(层序遍历)
按之字形顺序打印二叉树(层序遍历)
序列化二叉树(先序遍历序列化,递归反序列化)
栈、队列
用两个栈实现队列
栈的压入、弹出序列(按照弹出序列模拟栈的弹出)
堆、优先级队列、单调队列
数据流中的中位数(两个堆)
滑动窗口的最大值(单调队列)
排序
数组中的逆序对(归并排序)
二叉树中和为某一值的路径(dfs,二维ArrayList及其排序)
把数组排成最小的数(思维排序,Comparator)
字符串的排列(字符串的全排列,next_permutation实现)
数学、位运算、逻辑运算
二进制中1的个数(位运算n&(n-1))
整数中1出现的次数(从1到n整数中1出现的次数)
丑数(思维,枚举)
和为S的连续正数序列(数学+枚举)
求1+2+3+…+n(&&的短路原理)
不用加减乘除做加法(位运算)
递归、dfs
孩子们的游戏(圆圈中最后剩下的数) (约瑟夫环,递归)
正则表达式匹配(递归判定)
矩阵中的路径(dfs)
思维
变态跳台阶(思维/数学推导)
矩形覆盖(思维,斐波那契数列)
2065

被折叠的 条评论
为什么被折叠?



