剑指offer
仲翎逸仙
身常行慈,口常行慈,意常行慈
展开
-
10 打印二进制数中1的个数
题目描述: 对一个字节的无符号整型变量,求其二进制中1的个数代码:public class NumOf1 { /* 预定义的结果表 */ static int countTable[] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3,原创 2016-06-03 11:06:31 · 342 阅读 · 0 评论 -
41 和为 s 的两个数字
描述:解法一:package question41;import java.util.ArrayList;public class TwoNumbersWithSum { public static ArrayList FindNumbersWithSum(int [] array,int sum) { ArrayList list=new ArrayLi原创 2016-07-20 09:32:06 · 270 阅读 · 0 评论 -
31 连续子数组的最大和
描述:实现代码:package question31;public class GreatestSumOfSubarrays { public static void main(String[] args) { // TODO Auto-generated method stub int arr[]={1,-2,3,10,-4,7,2,-5};原创 2016-07-18 20:43:22 · 262 阅读 · 0 评论 -
40 数组中只出现一次的数字
描述:实现代码:package question40;public class NumbersAppearOnce { public static void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { int xor=0; for (int i : array) { xor=xor原创 2016-07-19 17:57:17 · 248 阅读 · 0 评论 -
39 二叉树的深度和宽度以及判断是否是平衡二叉树
描述:实现代码:package question39;import java.util.Scanner;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}publi原创 2016-07-19 11:37:13 · 339 阅读 · 0 评论 -
38 数字在排序数组中出现的次数
描述:实现代码:package question38;public class NumberOfK { static int GetNumberOfK(int data[],int length,int k){ int number=0; if (data.length!=0&&data!=null) { int first=GetFirstK(data,原创 2016-07-19 11:09:48 · 260 阅读 · 0 评论 -
37 两个链表的第一个公共结点
描述:实现代码:package question37;class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class FirstCommonNodesInLists { publ原创 2016-07-19 09:21:28 · 257 阅读 · 0 评论 -
36 数组中的逆序对
描述:实现代码:package question36;public class InversePairs { static int count=0; public static int inversePairs(int [] array) { int res=mergeSort(array,0,array.length-1); return res;原创 2016-07-19 08:41:41 · 234 阅读 · 0 评论 -
35 第一个只出现一次的字符
描述:实现代码package question35;public class FirstNotRepatingChar { public static void main(String[] args) { // TODO Auto-generated method stub String str="google"; int index= firstNo原创 2016-07-19 00:00:44 · 203 阅读 · 0 评论 -
34 丑数
描述:实现代码:package question34;public class UglyNumber { public static void main(String[] args) { // TODO Auto-generated method stub long t1=System.nanoTime(); int res1=GetUglyNumber(1原创 2016-07-18 23:23:04 · 214 阅读 · 0 评论 -
33 把数组排成最小数
描述:实现代码:import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;public class Solution { public static void main(String[] args) { i原创 2016-07-18 22:15:10 · 219 阅读 · 0 评论 -
30 最小的K个数
描述:红黑树什么的俺也不懂,干脆搞个大根堆来玩玩。。。。。。。。实现代码:import java.lang.reflect.Array;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import javax.sound.sampled.LineListener;pu原创 2016-07-18 20:02:47 · 230 阅读 · 0 评论 -
41 和为 s 的连续正数序列
描述:实现代码:package question41;public class ContinuesSquenceWithSum { static void FindContinuousSequence(int sum){ if (sum<2) { return; } int small=1; int big=2; int mid=(1+sum)原创 2016-07-20 09:35:23 · 253 阅读 · 0 评论 -
42 翻转单词顺序
描述 :实现代码:package question42;public class ReverseWordsInSentence { public static String ReverseSentence(String str) { if(str == null){ return null;} if(str.trim().equal原创 2016-07-20 09:39:47 · 306 阅读 · 0 评论 -
42 左旋转字符串
描述:实现代码:package question42;public class LoopMove { public static void main(String[] args) { // TODO Auto-generated method stub String str="abcdefg"; char a原创 2016-07-20 09:53:15 · 335 阅读 · 0 评论 -
32 从1到n 整数中1出现的次数
题目藐视: 常规思路: 创新思路: 这里写图片描述 实现代码:import java.util.Scanner;public class Sum1s { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new原创 2016-06-05 20:12:50 · 326 阅读 · 0 评论 -
重建二叉树06
class Node{ int val; Node left; Node right; public Node(int val) { // TODO Auto-generated constructor stub this.val=val; }}public class MyCreateBinaryTree { static boolean valid=tru原创 2017-09-07 21:25:20 · 198 阅读 · 0 评论 -
23 从上往下打印二叉树
描述:实现代码:package question23;import java.util.ArrayList;import java.util.Deque;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;class TreeNode { int val = 0;原创 2016-07-16 20:33:42 · 252 阅读 · 0 评论 -
19 二叉树的镜像
描述:实现代码:package question19;import java.util.Scanner;class TreeNode{ int val; TreeNode left=null; TreeNode right=null; public TreeNode(int val) { this.val=val; }}public class Mirro原创 2016-07-16 14:46:39 · 179 阅读 · 0 评论 -
47 大结局 不用加减乘除做加法
描述:实现代码:package question47;public class AddTwoNumbers { static int Add(int num1,int num2){ int sum,carry; do { sum=num1^num2; carry=(num1&num原创 2016-07-20 10:32:32 · 514 阅读 · 0 评论 -
45 圆圈中最后剩下的数字
描述:解法一: 利用数组来模拟链表package question45;import java.util.Scanner;/** *使用数组实现约瑟夫环问题 *由m个人围成一个首尾相连的圈报数。 *从第一个人开始,从1开始报数,报到n的人出圈, *剩下的人继续从1开始报数,直到所有的人都出圈为止。 *对于给定的m和n,求出所有人的出圈顺序. */publ原创 2016-07-20 10:24:30 · 1072 阅读 · 0 评论 -
02 实现 Singleton 模式
public class Singleton { private Singleton(){} /** * 类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例 * 没有绑定关系,而且只有被调用到时才会装载,从而实现了延迟加载。 */ private static class SingletonHolder{原创 2016-05-19 19:54:56 · 238 阅读 · 0 评论 -
28附加题 八皇后问题
剑指offer上解决八皇后问题,没有用传统的递归或非递归回溯法,而是用了很巧妙的全排列法。 先说下八皇后问题:在8 X 8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处于同一行,同一列或者同意对角线上,求出所有符合条件的摆法。 全排列解决八皇后问题的思路如下: 由于8个皇后不能处在同一行,那么肯定每个皇后占据一行,这样可以定义一个数组A[8],数组中原创 2016-07-18 15:55:27 · 500 阅读 · 0 评论 -
46 求 1+2+....n
描述:实现代码:package question46;public class Accumulate { /* * 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 * 解题思路: 1.需利用逻辑与的短路特性实现递归终止。 2.当n==0时,(n>0)&&((sum+=Sum原创 2016-07-20 10:26:40 · 291 阅读 · 0 评论 -
43 n 个筛子 的点数
描述:实现代码:package question43;public class DicsProbability { /* * 把n个骰子仍在地上,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能出现的概率 */ public static void printProbability(int numbe原创 2016-07-20 09:58:31 · 350 阅读 · 0 评论 -
29 数组中出现数字超过一半的数字
描述:实现代码:package question29;public class MoreThanHalfNumber { static boolean inputInvalid=false; public static void main(String[] args) { // TODO Auto-generated method stub int原创 2016-07-18 17:23:19 · 219 阅读 · 0 评论 -
28 字符串的排列
描述:实现代码:package question28;import java.util.ArrayList;import java.util.List;public class StringPermutation {static ArrayList list=new ArrayList(); public static void main(String[] arg原创 2016-07-18 14:44:17 · 204 阅读 · 0 评论 -
14调整数组顺序使奇数位于偶数前面
描述:实现代码:import java.util.ArrayList;public class ReorderArray { public static void main(String[] args) { // TODO Auto-generated method stub int arr[]={1,2,3,4,5,6,7}; // reOrder原创 2016-07-15 17:19:40 · 202 阅读 · 0 评论 -
13 在O(1)时间内删除链表节点
描述:实现代码:import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.LinkedList;import java.util.Scanner;class Node{ int val; Node nex原创 2016-07-15 16:31:21 · 347 阅读 · 0 评论 -
44 扑克牌的顺子
描述:思路: 先统计鬼的数量,排序,然后判断其他数字的最大与最小的值是不是实现代码:package question44;import java.util.Arrays;public class ContinousCard { public static boolean isContinuous(int [] numbers) { if (numbers==n原创 2016-07-20 10:02:42 · 364 阅读 · 0 评论 -
11 数值的整数次方
描述:参考代码:public class Power { static boolean valid=true; public static void main(String[] args) { // TODO Auto-generated method stub double res= power(2.0,-2); System.out.p原创 2016-07-14 22:06:30 · 441 阅读 · 0 评论 -
员工年龄排序 时间效率O(n)
描述:实现代码:public class SortAges { static int oldAge=99; public static void main(String[] args) { // TODO Auto-generated method stub int ages[]=new int[]{5,6,8,2,3,4,1,99}; SortAges(age原创 2016-07-14 21:19:03 · 298 阅读 · 0 评论 -
09 斐波那契数列
描述:这种算法很低效,因为很多数字重复算了,下面给出高效算法实现代码:/* * * f(n)=0, n=0 * fn=1,n=1 * fn=fn-1 + fn-2 n>=2 */public class Fibonacci { public static void main(String[] args) { // TODO Au原创 2016-07-14 20:14:28 · 242 阅读 · 0 评论 -
08 旋转数组的最小数字
描述:、实现代码:public class MinNumberInRotatedArray { public static void main(String[] args) { // TODO Auto-generated method stub int array[]={4,5,1,2,3}; //int array[]={1,0,1,1,1};原创 2016-07-14 19:44:20 · 198 阅读 · 0 评论 -
07附加题 用两个队列实现栈
思路:创建两个队列 q1,q2进栈操作:进入q1出栈操作: 1.当 q1为空,交换 q1与 q2 (如果 q2 的长度也空,提示此操作错误,必须先入栈!) 2. 当 q1 的 长度为 1,直接弹出 3. 当 q1的长度大于 1,压人q2 直到 q1 的长度 为1,最后弹出 q1 的元素实现代码:import java.util.Link原创 2016-07-14 18:44:56 · 242 阅读 · 0 评论 -
07 用两个栈实现队列
描述和分析:实现代码:import java.util.Stack;public class StackToQueue { static Stack stack1 = new Stack(); static Stack stack2 = new Stack(); public static void push(int node) { stack1.pus原创 2016-07-14 18:07:33 · 267 阅读 · 0 评论 -
05 从尾到头打印连表
思路很简单,用一个栈来存储链表,再拿出来就反向了 实现代码:import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Iterator;import java.util.List;import java.util.Scanner;import java.原创 2016-07-14 13:56:59 · 246 阅读 · 0 评论 -
12 打印1到最大的N位数(递归和非递归解法)
打印1到最大的N位数(递归和非递归解法)原创 2016-06-01 16:17:21 · 1725 阅读 · 1 评论 -
09扩展 青蛙跳台阶(高效解法)
面试题09扩展 青蛙跳台阶(高效解法)原创 2016-05-30 17:09:27 · 623 阅读 · 0 评论 -
03 二维数组中的查找
面试题03 二维数组中的查找原创 2016-05-19 20:56:11 · 236 阅读 · 0 评论