自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (3)
  • 收藏
  • 关注

原创 快速幂

题目计算an%ba^n \% b,其中a,b和n都是32位的整数。解题直接求超时class Solution { /* * @param a, b, n: 32bit integers * @return: An integer */ public int fastPower(int a, int b, int n) { // write

2016-06-28 20:49:41 1670

原创 用递归打印数字

题目用递归的方法找到从1到最大的N位整数。解题线性打印 public List<Integer> numbersByRecursion(int n) { // write your code here List<Integer> result = new ArrayList<Integer>(); int Max = (int)Math.pow(

2016-06-28 20:02:33 1222

原创 在O(1)时间复杂度删除链表节点

题目给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。解题这个删除结点的方式很好 把需要删除结点的值用后面一个结点值更新 删除后面的那个结点public class Solution { /** * @param node: the node in the list should be deleted * @return:

2016-06-28 19:36:11 1689

原创 搜索二维矩阵II

题目写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性:每行中的整数从左到右是排序的。 每一列的整数从上到下是排序的。 在每一行或每一列中没有重复的整数。解题和判断一个数是否在这样的二维矩阵中一样,判断找到适合就结束了 这个题目有多个,找到一个的时候还要继续找,直到找完public class Solution { /** * @param

2016-06-28 19:31:54 1961

原创 二叉搜索树与双向链表

题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题 根据上图可以发现是中序遍历的过程 但是我们需要改变其结点关系 中序遍历:左根右 调整后: root.left = ListLeft ListLeft.right = rootroot.right = ListRight ListRight.left = root

2016-06-28 11:40:05 1218

原创 复杂链表的复制

复杂链表的复制

2016-06-28 10:52:55 937

原创 滑动窗口的最大值

题目给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,

2016-06-28 10:31:26 1104

原创 序列化二叉树

题目请实现两个函数,分别用来序列化和反序列化二叉树解题什么是序列化? 可以理解为一直存储结构 序列化后还要可以反序列化 对于树的序列号,可以理解为层次遍历,但是也要记录其中的空结点,这是为了能够回去public class Solution { String Serialize(TreeNode root) { if(root == null) r

2016-06-28 00:30:48 1588 1

原创 扑克牌顺子

题目LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…..LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张

2016-06-28 00:01:17 3071

原创 丑数

题目把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题

2016-06-27 23:06:35 1438

原创 从1到n整数中1出现的次数

题目输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11,12共出现5次解题这个题目比较难 直接暴力public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int count = 0; for

2016-06-27 22:02:02 1657

原创 机器人的运动范围

题目地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子解题能走一直走 走过的不在走public class Solution { int count=0; public int movingCount(int threshold, int rows, int cols)

2016-06-26 22:11:04 1958

原创 矩阵中的路径

题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子解题深度搜索public class Solution { public boolean hasPath(char[] matrix, int rows, int

2016-06-26 21:40:00 2277

原创 数据流中的中位数

题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。解题剑指offer上说的很详细 1.无序数组 插入:O(1)O(1) 获取中位数:O(N)O(N)import java.util.*;public class Solution { ArrayL

2016-06-26 21:15:31 1838 3

原创 二叉搜索树的第k个结点

题目给定一颗二叉搜索树,请找出其中的第k大的结点。解题中序遍历时候找到第k大结点import java.util.ArrayList;public class Solution { ArrayList<TreeNode> list = new ArrayList<TreeNode>(); TreeNode KthNode(TreeNode pRoot, int k) {

2016-06-26 20:10:22 1710

原创 按之字形顺序打印二叉树

题目请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解题层次遍历二叉树很好理解 用队列临时存放其中一层的结点,出队列更新到下一层结点 按之字形顺序打印二叉树需要两个栈。 在打印某一行结点时,把下一层的结点保存到相应的栈里。如果当前打印的是奇数层,则先保存左子结点再保存右子结点到第一个栈里;如果当前打

2016-06-26 19:22:12 1829

原创 把二叉树打印成多行

题目从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解题二叉树的层次遍历 用队列import java.util.ArrayList;import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; publi

2016-06-26 18:45:01 1588

原创 对称的二叉树

题目请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。解题两个二叉树的前序遍历一样 同时需要考虑空结点/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int

2016-06-26 17:25:15 1607

原创 删除链表中重复的结点

题目在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题提取不相同元素/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.v

2016-06-25 23:05:01 844

原创 链表中环的入口结点

题目一个链表中包含环,请找出该链表的环的入口结点。解题Set这样的太机智 剑指offer上没给证明,在LeetCode上看到讲解,总结如下 我们找到相遇节点C后 指向开始节点和C出的节点一次走一步,相遇就是环起始节点 疑问:为什么要把n设置成1?快慢指针走的环的次数差一定是1时是第一次相遇,合理解释就是方便计算。/* public class ListNode { int va

2016-06-25 22:28:29 1155

原创 字符流中第一个不重复的字符

题目请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符。解题list、map list记录字符串的先后顺序 map记录每个字符串出现顺序import java.util

2016-06-25 20:43:01 2413

原创 表示数值的字符串

题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。解题表示数值的字符串准守下面模式: [sign]integral−digits[.[fractional−digits]][e|E[sign]exp

2016-06-25 19:40:38 1985

原创 正则表达式匹配

题目请实现一个函数用来匹配包括’.’和’*’的正则表达式。模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配解题字符相等,sId+1,pId+1 遇到点,sId+1,pId+1 遇到星号 表示它前面的字符

2016-06-25 18:55:14 1889

原创 构建乘积数组

题目给定一个数组A[0,1,...,n−1]A[0,1,...,n-1],请构建一个数组B[0,1,...,n−1]B[0,1,...,n-1],其中BB中的元素B[i]=A[0]∗A[1]∗...∗A[i−1]∗A[i+1]∗...∗A[n−1]B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。解题书上讲的很好import java.util.A

2016-06-25 18:26:31 1819

原创 数组中重复的数字

题目在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。解题HashMap或者数组占用空间 利用数组,A[i]表示i值出现的次数 public boolean duplicate(

2016-06-25 17:27:25 5892 1

原创 把字符串转换成整数

题目将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。解题说明:字符串可能带有正负号,可能含有非数字字符 先判断是否是数字 再判断是正负 再转换public class Solution { public int StrToInt(String str) { char[] chs = str.toCharArray(); if( !isDi

2016-06-25 16:40:37 2454

原创 不用加减乘除做加法

题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题还剩运算:位运算,逻辑运算 可以用:if、while、for 0、1逻辑运算和和运算对比 a b & ^ 和 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 0 10可以发现: 异或运算

2016-06-25 16:29:47 1452

原创 求1+2+3+...+n

题目求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解题直接求和公式sum=(1+n)n/2sum =(1+n)n/2,有乘法除法,+-模型*/,需要for 位运算模拟*/ ? 可以吗?讨论中用逻辑与运算,因为逻辑与具有短路功能,当前面为false后面就不再判断public class Solution {

2016-06-25 16:14:21 2107

原创 圆圈中最后剩下的数

题目n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。解题约瑟夫环问题 方法一:数组法public class Solution { public int LastRemaining_Solution(i

2016-06-25 15:30:25 1698

原创 n个骰子的和为S

题目n个骰子仍在地上,所有骰子朝上一面的和,求出和为K的所有可能组合方式解题区分骰子标号 比如:1+2+3 = 5,与1+3+2 = 5是两种方式 转换成数学表达式: x1+x2+...+xn=kx_1 + x_2+...+x_n=k s.t.xi={1,2,3,4,5,6},i=1,..,ns.t. x_i =\left \{ 1,2,3,4,5,6 \right \},i=1,..,n

2016-06-25 14:48:21 1823

原创 翻转单词顺序列

题目输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I”。解题说明 1.单词以空格隔开 2.标点符号和字母一样处理 方法: 先将整个字符串选择 对上面的例子:“.tenduts a ma I” 再对每个以空格隔开的字符串进行选

2016-06-25 12:10:55 1148

原创 左旋转字符串

题目字符串左移k位后的结果解题旋转三次public class Solution { public String LeftRotateString(String str,int n) { if(str == null || str.length() <=1) return str; int len= str.length();

2016-06-24 18:54:29 1718

原创 和为S的两个数字

题目输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 对应每个测试案例,输出两个数,小的先输出解题递增数组,应该用到 两个指针,两次向中间走,计算两个指针指向的两个数的和,等于S就是答案 关于多个的情况 和定,积有最大值,当且仅当数相等时候,各数的差别越大,积越小。import java.util.ArrayLi

2016-06-24 16:47:54 1343

原创 和为S的连续正数序列

题目输出所有和为S的连续正数序列(至少含有两个数),序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序解题和为S的数,只有一个数时候和为S,这个数就是S,当数多余两个的时候,序列中的值最大不会超过这个最大值S 换句话说: 求1到S内,和为S的连续正数序列 方法一:暴力 两点: 连续和,等差数列公式 判断和是否等于S 但是当S比较大的时候求连续和会越界import java.ut

2016-06-24 16:24:22 1089

原创 数组中只出现一次的数字

题目一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题方法一: HashMap或者List寻找出现一次的数 Map//num1,num2分别为长度为1的数组。传出参数//将num1[0],num2[0]设置为返回结果import java.util.*;public class Solution { public

2016-06-24 15:16:49 1185

原创 平衡二叉树

题目输入一棵二叉树,判断该二叉树是否是平衡二叉树解题平衡二叉树:每个节点左右子树的高度差只能是:-1、0、1 判断每个节点左右子树高度是否满足上面条件import java.util.LinkedList;public class Solution { public boolean IsBalanced_Solution(TreeNode root) { if(root

2016-06-23 23:55:57 935

原创 二叉树的深度

题目输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。解题方法一:递归/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) {

2016-06-23 23:27:14 914

原创 数字在排序数组中出现的次数

题目统计一个数字在排序数组中出现的次数。解题方法一:暴力 线性遍历 方法二:二分法 分别求出左右边界public class Solution { public int GetNumberOfK(int [] array , int k) { if(array == null|| array.length==0) return 0;

2016-06-23 22:39:48 837

原创 两个链表的第一个公共结点

题目输入两个链表,找出它们的第一个公共结点。解题说明: 1.单链表 2.相交后不会分开,因为分开后一个结点有两个下一个结点就不是单链表了 两个链表呈YY形 如果两个链表两个指针向前走,相遇结点就是第一个公共结点,但是两个指针走的长度不一样 两个指针走了不同长度的YY上面的两个叉,如果求出两个指针分布应该走的两个叉的结点个数后,那么下一个结点就是他们第一个公共结点。 如果求出两个链表的长度

2016-06-23 22:22:56 799

原创 数组中的逆序对

题目在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。解题方法一:暴力public class Solution { public int InversePairs(int [] array) { if(array == null || array.length <=1) ret

2016-06-23 21:54:37 811

LeetCode 官方 Clean Code Hand Book50题

LeetCode 官方 Clean Code Hand Book50题

2015-10-07

The Matrix CookBook

The Matrix CookBook,关于矩阵的运算公式

2015-02-05

十天学会易语言_易语言教程(全)

十天学会易语言_易语言教程(全),易语言浅显学习教材

2014-09-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除