算法题 LeetCode、剑指Offer ##LeetCode 程序目录
-
LC1:给定一个有序数组,和一个整数target,找到两个元素,使其等于target(LC167类似)
-
LC2:两个链表位数相加生成新的链表
-
LC3:找到最长不重复子串(滑动窗口思路)
-
LC11:找到一组数a1,a2,a3,a4,a5的两个数,数字的值为墙的高度,使得与x轴构成的容器,盛水最多。
-
LC15:找到所有三元组,使得相加为0
-
LC16:三元组,使其和最接近target
-
LC17:给定一个数字,求出所有字母组合
-
LC18:四元组问题(所有),使得其和等于target
-
LC19:删除倒数第N个节点
-
LC20:括号匹配
-
LC21:两个有序链表的归并
-
LC23:K个有序数组归并为一个有序数组(Time exceeded,need to follow)
-
LC24:交换链表的节点对
-
LC25:交换链表的K-group节点组
-
LC26:有序数组中去除重复元素
-
LC27:删除某个值
-
LC37:求解数独问题
-
LC39:元素组合,其和为T
-
LC40:元素(可以相同)组合,每个数只能取一次其和为T
-
LC46:给定一个数组,求所有排列
-
LC47:给定一个数组(数组元素可能相同),求所有排列
-
LC49:找到含有相同字符的 组。
-
LC51:N皇后
-
LC52:N皇后2
-
LC61:链表向右旋转K位
-
LC71:根据字符串路径获取绝对路径
-
LC75:三色排序(0,1,2),思路1:计数排序,思路2:3路快排
-
LC76:寻找最短子串包含所有字符**(hard)**
-
LC77:n-k 组合问题
-
LC78:所有子集
-
LC79:二维平面单词搜索
-
LC80:数组元素去重,最多保留两个 (beated 7.15% need to follow)
-
LC82:链表去除为重复的元素例如:1,2,2,3 return : 1->3
-
LC83:链表去重
-
LC86:对链表进行Partition (beated 4.82% need to follow)
-
LC88:Merge Sored Array
-
LC90:集合子集 元素可能重复
-
LC92:从M,到N反转链表
-
LC93:给定一个字符串,求所有ip的可能性
-
LC94:二叉树中序遍历
-
LC98:验证是否是二分搜索树
-
LC100:判断两棵树是不是一样
###101-200
-
LC101:判断一棵树是不是对称
-
LC102:二叉树层次遍历
-
LC103:对一个二叉树进行层次遍历,返回之字形,1层(->),2层(<-),3层(->)
-
LC104:求出二叉树的深度
-
LC107:二叉树层序遍历,要求从底向上
-
LC108:有序数组转为二分搜索树
-
LC110:判断一个树是不是平衡二叉树
-
LC111:求二叉树的最低深度,从根节点到叶子的最短路径(beated 3.8% need to follow)
-
LC112:给一个二叉树,返回一条和为sum的路径
-
LC113:给一个二叉树,返回所有和为sum的路径
-
LC125:判断字符串是否是回文,忽略大小写,忽略符号
-
LC129:从根节点到叶子结点所有路径组成的数的和 (beated 6.34% need to follow)
-
LC130:将被X包围的O字符翻转为X (beated 7.83% need to follow)
-
LC131:给定一个字符串,求拆分字符串为回文的所有可能
-
LC144:二叉树前序遍历
-
LC144:二叉树后序遍历
-
LC147:链表插入排序
-
LC148:用O(nlogn)对链表进行排序
-
LC149:给出N个点,求最多有多少个点在一条直线上
-
LC150:逆波兰表达式求值,后序表达式
-
LC167:给定一个有序数组,和一个整数target,找到两个元素,使其等于target
思路:暴力、剩余二分查找、左右移动(对撞指针)
-
LC199:返回一棵二叉树最右侧的一组节点
-
LC200:水域岛屿问题 FloodFill算法问题
-
LC209:最短连续子数组,使得和大于 S给定值
-
LC202:Happy Number
-
LC203:删除链表的所有指定节点
-
LC205:字符串是否同构 例如:s=agg, t=egg, return :true;
-
LC206:反转链表
-
LC215:找到第K大的元素 (beats 11.5% need to follow)
-
LC217:存在相同元素,则返回true
-
LC216:1-9 数字,选出K个,每个数字只能使用一次,使其和为n
-
LC219:给定一个数组,和一个K,判断是否存在nums[i] == numsp[j],且i、j距离小于k
-
LC220:给定一个数组,和一个K,判断是否存在nums[i],numsp[j],且i、j距离小于k,nums[i] nums[j]差值小于t
-
LC222:完全二叉树节点个数
-
LC226:左右反转二叉树
-
LC230:二分搜索树中找到第K小的节点
-
LC236:任意二叉树找到两个节点的公共祖先
-
LC242:一个字符串包含字符与另一个字符串相同
-
LC257:获得二叉树所有路径
-
LC283:将零元素移位到最后
-
LC290:字符串模式匹配 PATTERN = ABBA;str="dog cat dog cat" return true;
-
LC312:打气球问题
-
LC326:求一个n是否是3个次方。
-
LC328:整理链表,使得奇数节点排在前面,偶数节点排在后面
-
LC344:字符串反转
-
LC345:字符串元音字母翻转
-
LC347:获得出现频率最高的K的元素
-
LC349:两个数组的公共元素
-
LC350:求交集
-
LC401:二进制表
-
LC404:求所有左叶子之和
-
LC417:水的流动
-
LC437:路径和为sum的路径,路径不要求从根节点开始
-
LC438:找到A字符串中包含S的所有起始位置 例如:A = abab,S=ab 返回:0,1,2
-
LC445:两个链表位数相加生成新的链表(顺序)
-
LC447:找到平面三个点,使得i,j 的距离与i,k的距离相等的组合个数
-
LC450:二分搜索树删除一个节点
-
LC451:按照字母出现频率重排字符串
-
LC454:四个整形数组,求所有四元组之和等于0 ,返回可能的组合
-
LC502:IPO,满足起始资金则启动项目,求最后的captical