leetcode刷题
遇见更好的自己
非淡泊无以明志,非宁静无以致远
展开
-
算法总结-两根指针
Two SumTwo Sum http://www.lintcode.com/zh-cn/problem/two-sum-input-array-is-sorted/Two Sum - Unique pairs http://www.jiuzhang.com/solutions/two-sum-unique-pairs/三数之和 http://www.lintcode.com/zh-cn/p原创 2018-03-25 17:34:01 · 413 阅读 · 0 评论 -
算法总结-二分搜索
一. 二分搜索(Binary Search)模板public class Solution { /* * @param nums: An integer array sorted in ascending order * @param target: An integer * @return: An integer */ public int...原创 2018-02-27 20:28:23 · 339 阅读 · 0 评论 -
快慢指针-141. Linked List Cycle 142. Linked List Cycle II
Given a linked list, determine if it has a cycle in it./** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val =原创 2017-10-27 10:06:43 · 216 阅读 · 0 评论 -
剑指offer-链表专题
6 从尾到头打印链表http://blog.csdn.net/yc1203968305/article/details/7928212218 删除链表的结点http://blog.csdn.net/yc1203968305/article/details/7927826822 链表中倒数第k个结点http://blog.csdn.net/yc1203968305/article/details/78原创 2018-02-07 17:12:16 · 237 阅读 · 0 评论 -
链表-从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。利用栈存储链表信息/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }*原创 2018-02-07 17:05:58 · 150 阅读 · 0 评论 -
二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。Solution/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(原创 2018-02-13 18:25:49 · 118 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。Solutionimport java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNod原创 2018-02-13 18:11:34 · 132 阅读 · 0 评论 -
二叉搜索树的后续遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。Solutionpublic class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence == nul原创 2018-02-13 12:00:14 · 149 阅读 · 0 评论 -
按之字形打印二叉树
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。Solutionimport java.util.ArrayList;/*public class TreeNode { int val = 0; TreeNode left = null; T原创 2018-02-13 11:50:22 · 131 阅读 · 0 评论 -
把二叉树打印成多行
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。Solutionimport java.util.ArrayList;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(原创 2018-02-13 11:45:45 · 130 阅读 · 0 评论 -
从上往下打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。Solutionimport java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(in原创 2018-02-13 11:43:12 · 140 阅读 · 0 评论 -
对称二叉树
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 Solution /*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(in...原创 2018-02-13 11:40:37 · 139 阅读 · 0 评论 -
二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5原创 2018-02-13 11:38:32 · 110 阅读 · 0 评论 -
树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)Solution/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) {原创 2018-02-13 11:36:14 · 122 阅读 · 0 评论 -
重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。Solution/** * Definition for binary tree * public class TreeNode原创 2018-02-13 11:30:11 · 118 阅读 · 0 评论 -
Java实现二叉树的四种遍历
package Tree;import java.util.ArrayDeque;import java.util.Queue;import java.util.Stack;/** * Created by lenovo on 2017/9/6. */public class BinaryTree { /* * 前序遍历,递归实现 * */ pub...原创 2018-02-12 21:41:53 · 152 阅读 · 0 评论 -
链表中删除指定结点的两种方式
题目:给定单项链表的头指针和一个结点指针,定义一个函数在o(1)的时间删除该结点,链表的定义如下:struct ListNode{ int value; ListNode* next;};函数定义:void DeleteNode(ListNode** PListHead,ListNode* pToBedelete); 如上图所示,原创 2018-02-07 11:37:37 · 15178 阅读 · 3 评论 -
字符串的排列与组合
全排列所谓全排列,就是打印出字符串中所有字符的所有排列。例如输入字符串abc,则打印出 a、b、c 所能排列出来的所有字符串 abc、acb、bac、bca、cab 和 cba 。一般最先想到的方法是暴力循环法,即对于每一位,遍历集合中可能的元素,如果在这一位之前出现过了该元素,跳过该元素。例如对于abc,第一位可以是 a 或 b 或 c 。当第一位为 a 时,第二位再遍历集合,发现 a 不行,因...原创 2018-02-23 18:58:04 · 444 阅读 · 0 评论 -
字符串的排列之八皇后问题
其实字符串全排列问题是8皇后问题的一个小问题,先说说8皇后问题吧!八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用原创 2018-02-23 19:18:06 · 223 阅读 · 0 评论 -
平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。Solutionclass Result{ int Depth; boolean isBanlanced; Result(int Depth,boolean isBanlanced){ this.Depth = Depth; this.isBanlanced = isBanlanced;...原创 2018-02-24 15:54:53 · 144 阅读 · 0 评论 -
算法总结-数组和链表
1 链表Dummy Node的应用K组翻转链表 http://www.lintcode.com/zh-cn/problem/reverse-nodes-in-k-group/链表划分 http://www.lintcode.com/zh-cn/problem/partition-list/合并两个排序链表 http://www.lintcode.com/zh-cn/problem/merge原创 2018-03-14 10:55:30 · 270 阅读 · 0 评论 -
算法总结之深度优先搜索
1 组合搜索问题 子集 http://www.lintcode.com/zh-cn/problem/subsets/带重复元素的子集 http://www.lintcode.com/zh-cn/problem/subsets-ii/数字组合 http://www.lintcode.com/zh-cn/problem/combination-sum/数字组合 II http://www.l原创 2018-03-14 10:02:34 · 335 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
海量数据处理:十道面试题与十个海量数据处理方法总结作者:July、youwang、yanxionglu。时间:二零一一年三月二十六日本文之总结:教你如何迅速秒杀掉:99%的海量数据处理面试题。有任何问题,欢迎随时交流、指正。出处:http://blog.csdn.net/v_JULY_v。 第一部分、十道海量数据处理面试题1、海量日志数据转载 2018-03-13 21:21:22 · 265 阅读 · 0 评论 -
算法总结-动态规划
动态规划题目特点动态规划思考方式1 确定状态最后一步(最优策略中使用的最后一枚硬币aK)化成子问题(最少的硬币拼出更小的面值27-aK)2 转移方程f[X] = min{f[X-2]+1, f[X-5]+1, f[X-7]+1}3 初始条件和边界情况f[0] = 0, 如果不能拼出Y,f[Y]=正无穷4 计算顺序f[0],...原创 2018-03-05 21:13:50 · 309 阅读 · 0 评论 -
算法总结-二叉树的深度优先搜索
1 遍历的问题二叉树的前序遍历 http://www.lintcode.com/zh-cn/problem/binary-tree-preorder-traversal/二叉树的中序遍历 http://www.lintcode.com/zh-cn/problem/binary-tree-inorder-traversal/二叉树的后序遍历 http://www.lintcode.com/zh-原创 2018-03-12 18:24:40 · 471 阅读 · 0 评论 -
算法总结-宽度搜索
二叉树上的宽度搜索1 二叉树的层次遍历http://www.lintcode.com/zh-cn/problem/binary-tree-level-order-traversal/2 二叉树的层次遍历2http://www.lintcode.com/zh-cn/problem/binary-tree-level-order-traversal-ii/3 二叉树的锯齿形层次遍历http://www.原创 2018-03-12 17:57:14 · 383 阅读 · 0 评论 -
剑指offer字符串系列
字符串的全排列http://blog.csdn.net/yc1203968305/article/details/79356291字符串的全排列之八皇后问题http://blog.csdn.net/yc1203968305/article/details/79356426第一个只出现一次的字符http://blog.csdn.net/yc1203968305/article/details/7936原创 2018-02-24 16:16:42 · 199 阅读 · 0 评论 -
把字符串转换成整数
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+2147483647 1a33输出2147483647 0/*1.字符串为空2.只有一个正负号3.整数上下溢出*/public class...原创 2018-02-25 13:57:32 · 271 阅读 · 0 评论 -
左旋转字符串
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!public class Solution { public String LeftRotat...原创 2018-02-25 13:54:11 · 157 阅读 · 0 评论 -
翻转单词顺序列
题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?/*一:第一步翻转句子中的...原创 2018-02-25 13:52:57 · 252 阅读 · 0 评论 -
字符流中第一个不重复的字符
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。 import java.util.*;public class Solution { int[] hash...原创 2018-02-25 13:51:13 · 158 阅读 · 0 评论 -
第一个只出现一次的字符
题目描述在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置//利用数组实现一个简单的hash表,来以时间换取空间public class Solution { public int FirstNotRepeatingChar(String str) { char[] c = str.toCharArray...原创 2018-02-25 13:47:41 · 175 阅读 · 0 评论 -
二叉搜索树的第k个结点
题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int va...原创 2018-02-24 16:16:17 · 132 阅读 · 0 评论 -
序列化二叉树
题目描述请实现两个函数,分别用来序列化和反序列化二叉树/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public ...原创 2018-02-24 16:10:50 · 133 阅读 · 0 评论 -
二叉树的下一个节点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = ...原创 2018-02-24 16:09:14 · 120 阅读 · 0 评论 -
二叉树的深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) {原创 2018-02-24 16:06:27 · 138 阅读 · 0 评论 -
排序算法整理
1 快速排序算法public void quickSort(int[] nums,int start,int end){ if (start >= end) return; //conquer int left = start,right = end-1; //选择数组最后一个数字作为主元,把小于主元的数...原创 2018-02-26 09:41:56 · 198 阅读 · 0 评论 -
Rotated Sorted Array I II
(1)Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).Find the minimum element.You may a原创 2018-02-05 17:00:02 · 122 阅读 · 0 评论 -
动态规划之从搜索到记忆化搜索到递推式
120. TriangleGiven a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, given the following triangle[ [原创 2017-11-03 16:35:27 · 385 阅读 · 0 评论 -
动态规划-309. Best Time to Buy and Sell Stock with Cooldown
题目:Say you have an array for which the ith element is the price of a given stock on day i.Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie,原创 2017-10-08 16:35:35 · 236 阅读 · 0 评论