剑指offer
mhHao
Talk less, do more.
展开
-
剑指offer-13.机器人的运动范围
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?public class Solution ...原创 2020-01-30 19:25:32 · 95 阅读 · 0 评论 -
剑指offer-12. 矩阵中的路径
判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向上下左右移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。public class Solution { private int[][] next = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; private int ro...原创 2020-01-30 18:46:49 · 190 阅读 · 0 评论 -
剑指offer题解55.1:二叉树的深度
题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。题解:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) {...原创 2019-08-31 11:11:08 · 107 阅读 · 0 评论 -
剑指offer题解54:二叉搜索树的第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 v...原创 2019-08-31 11:04:59 · 90 阅读 · 0 评论 -
剑指offer题解53:数字在排序数组中出现的次数
题目描述:统计一个数字在排序数组中出现的次数。题解:public class Solution { public int GetNumberOfK(int [] array , int k) { int first = binSearch(array, k); int last = binSearch(array, k+1); return l...原创 2019-08-30 19:44:59 · 104 阅读 · 0 评论 -
剑指offer题解52:两个链表的第一个公共结点
题目描述:输入两个链表,找出它们的第一个公共结点。题解:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode F...原创 2019-08-30 18:24:56 · 88 阅读 · 0 评论 -
剑指offer题解50:第一个只出现一次的字符位置
题目描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).题解:import java.util.BitSet;public class Solution { public int FirstNotRepeatingChar(String str) { BitSet ...原创 2019-08-30 17:55:06 · 92 阅读 · 0 评论 -
剑指offer题解49:丑数
题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。题解:public class Solution { public int GetUglyNumber_Solution(int index) { if(index==0) ...原创 2019-08-30 16:47:05 · 82 阅读 · 0 评论 -
剑指offer题解48:最长不含重复字符的子字符串
最长不含重复字符的子字符串原创 2019-08-30 13:50:57 · 171 阅读 · 0 评论 -
剑指offer题解47:礼物的最大价值
. 礼物的最大价值原创 2019-08-30 13:49:58 · 165 阅读 · 0 评论 -
剑指offer题解46: 把数字翻译成字符串
把数字翻译成字符串原创 2019-08-30 13:30:58 · 99 阅读 · 0 评论 -
剑指offer题解45:把数组排成最小的数
题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。题解:import java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;public class Soluti...原创 2019-08-30 13:21:20 · 121 阅读 · 0 评论 -
剑指offer题解43:从 1 到 n 整数中 1 出现的次数
题目描述原创 2019-08-30 12:49:11 · 149 阅读 · 0 评论 -
剑指offer题解42:连续子数组的最大和
题目描述:{6, -3, -2, 7, -15, 1, 2, 2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。题解:public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int sum = array[0]; int max=sum;...原创 2019-08-30 12:03:07 · 76 阅读 · 0 评论 -
剑指offer题解55.2:数字在排序数组中出现的次数
题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树左右子树高度差不超过 1。题解:public class Solution { boolean balance = true; public boolean IsBalanced_Solution(TreeNode root) { depth(root); return bala...原创 2019-08-31 11:19:16 · 88 阅读 · 0 评论 -
剑指offer题解56:数组中只出现一次的数字
题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。题解://num1,num2分别为长度为1的数组。传出参数//将num1[0],num2[0]设置为返回结果public class Solution { public void FindNumsAppearOnce(int [] array,int num1[] , int nu...原创 2019-08-31 12:17:16 · 71 阅读 · 0 评论 -
剑指offer题解68. 树中两个节点的最低公共祖先
题目描述:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。题解:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val =...原创 2019-09-01 13:25:41 · 96 阅读 · 0 评论 -
剑指offer题解67. 把字符串转换成整数
题目描述:将一个字符串转换成一个整数,字符串不是一个合法的数值则返回 0,要求不能使用字符串转换整数的库函数。题解:public class Solution { public int StrToInt(String str) { if(str==null || str.length()==0) return 0; int ret...原创 2019-09-01 11:33:43 · 140 阅读 · 0 评论 -
剑指offer题解66. 构建乘积数组
题目描述:给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。题解:import java.util.ArrayList;public class Solution { public int[] multiply(int[] A) { int ...原创 2019-09-01 10:56:21 · 110 阅读 · 0 评论 -
剑指offer题解65. 不用加减乘除做加法
题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。题解:public class Solution { public int Add(int num1,int num2) { if(num2==0) return num1; else return Add(num1^n...原创 2019-09-01 10:29:26 · 68 阅读 · 0 评论 -
剑指offer题解64. 求 1+2+3+...+n
题目描述:要求不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句 A ? B : C。题解:public class Solution { public int Sum_Solution(int n) { int sum=0; boolean b = n >=1 && (sum=n+S...原创 2019-09-01 09:57:58 · 119 阅读 · 0 评论 -
剑指offer题解63. 股票的最大利润
题目描述:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。题解:class Solution { public int maxProfit(int[] prices) { if(prices == null || prices...原创 2019-09-01 09:48:52 · 519 阅读 · 0 评论 -
剑指offer题解61. 扑克牌顺子
题目描述:五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。题解:import java.util.Arrays;public class Solution { public boolean isContinuous(int [] numbers) { if(numbers.length<5) return false;...原创 2019-09-01 09:11:06 · 136 阅读 · 0 评论 -
剑指offer题解59: 滑动窗口的最大值
题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组 {2, 3, 4, 2, 6, 2, 5, 1} 及滑动窗口的大小 3,那么一共存在 6 个滑动窗口,他们的最大值分别为 {4, 4, 6, 6, 6, 5}。题解:import java.util.PriorityQueue;import java.util.ArrayList;public c...原创 2019-08-31 18:36:58 · 178 阅读 · 0 评论 -
剑指offer题解58.2:左旋转字符串
题目描述:Input: S=“abcXYZdef” K=3 Output:“XYZdefabc”题解:public class Solution { public String LeftRotateString(String str,int n) { if(n>str.length()) return ""; char[]...原创 2019-08-31 18:19:30 · 140 阅读 · 0 评论 -
剑指offer题解58.1: 翻转单词顺序列
题目描述:Input:“I am a student.” Output:“student. a am I”题解:public class Solution { public String ReverseSentence(String str) { char[] chars = str.toCharArray(); int i=0, lasti = 0;...原创 2019-08-31 14:15:32 · 184 阅读 · 0 评论 -
剑指offer题解57.2:和为 S 的连续正数序列
题目描述:输出所有和为 S 的连续正数序列。例如和为 100 的连续序列有:[9, 10, 11, 12, 13, 14, 15, 16],[18, 19, 20, 21, 22]。题解:import java.util.ArrayList;public class Solution { public ArrayList<ArrayList<Integer> >...原创 2019-08-31 13:18:59 · 168 阅读 · 0 评论 -
剑指offer题解57.1:和为S的两个数字
题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。题解:import java.util.ArrayList;import java.util.Arrays;public class Solution { public ArrayList<Integer> FindNumbersWi...原创 2019-08-31 12:44:14 · 126 阅读 · 0 评论 -
剑指offer题解41.2:字符流中第一个不重复的字符
题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。题解:import java.util.LinkedList;import java.util.Queue;public class Solution { //...原创 2019-08-30 11:30:23 · 150 阅读 · 0 评论 -
剑指offer题解41:数据流中的中位数
题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。题解:import java.util.PriorityQueue;public class Sol...原创 2019-08-30 10:34:47 · 82 阅读 · 0 评论 -
剑指offer题解40:最小的K个数
题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。题解:import java.util.ArrayList;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, i...原创 2019-08-30 09:49:27 · 80 阅读 · 0 评论 -
剑指offer题解25:合并两个排序的链表
题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。题解:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Soluti...原创 2019-08-27 09:53:02 · 89 阅读 · 0 评论 -
剑指offer题解24:反转链表
题目描述:输入一个链表,反转链表后,输出新链表的表头。题解:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.Stack;public class Soluti...原创 2019-08-27 09:31:37 · 118 阅读 · 0 评论 -
剑指offer题解23:链表中环的入口结点
题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。题解:/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { ...原创 2019-08-26 21:57:55 · 701 阅读 · 0 评论 -
剑指offer题解22:链表中倒数第k个结点
题目描述:输入一个链表,输出该链表中倒数第k个结点。题解:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ...原创 2019-08-26 21:15:44 · 113 阅读 · 0 评论 -
剑指offer题解21:调整数组顺序使奇数位于偶数前面
题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题解:public class Solution { public void reOrderArray(int [] array) { int oddCnt=0; for(int...原创 2019-08-26 20:14:57 · 120 阅读 · 0 评论 -
剑指offer题解20:表示数值的字符串
题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。题解:public class Solution { public boolean isNumeric(char[] str) {...原创 2019-08-26 19:47:17 · 206 阅读 · 0 评论 -
剑指offer题解16:数值的整数次方
题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。题解:public class Solution { public double Power(double base, int exponent) { if(exponent==0) r...原创 2019-08-26 16:17:30 · 96 阅读 · 0 评论 -
剑指offer题解15:二进制中 1 的个数
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。题解:public class Solution { public int NumberOf1(int n) { int cnt=0; while(n!=0){ n&=(n-1); cnt++; } ...原创 2019-08-26 14:42:58 · 78 阅读 · 0 评论 -
剑指offer题解14:剪绳子
题目描述:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。题解:class Solution { public int integerBreak(int n) { if(n<=3) return n-1; int ret=1; while(n>4)...原创 2019-08-26 14:25:28 · 110 阅读 · 0 评论