自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

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

题目:输入一个整数n,求从1到n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1、10、11和12、1一共出现5次。解法1:package BitCount;import java.util.Scanner;public class CountOneMain { public static int countOne(int n) { in

2015-07-26 22:10:29 519

原创 java之连续子数组的最大和

题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组,求所有子数组的和的最大值。要求时间复杂度为O(n).这个解法可以用动态规划来解。其代码为:package LinkList;public class FindMaxSumofSubArrayMain { public static int maxSubSum(int[] a) { int

2015-07-26 21:25:36 2191

原创 java之最小的k个数

题目:输入n数字,找出其中最小k个数字,例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4分析:第一种方法,想到了partition函数,在位置k分割成两个部分,第一部分为小于第k个数,第二部分为大于第k个数,只用知道在k位置之前的数就是我们所求的数字。有个缺点就是改变初始数组,如果要求不改变,可以用第二种解法。第二种方法,用到了红黑色,就是TreeSet,

2015-07-17 17:09:54 394

原创 java之数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现5次,超过数组长度的一半,因此输出2.分析:有两种解法:1.基于快速排序中的partition函数的O(n)算法。如果把这个数组排序,那么排序后的数组中间的数字一定是那个出现次数超过数组长度一半的数字。2.根据数组特性,可以考虑遍历

2015-07-17 16:02:02 578

转载 字符串数组的全排列到八皇后问题详解

八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。

2015-07-14 16:29:45 462

原创 java之字符串组合

题目:输入字符如a,b,c,输出a,b,c,ab,ac,ba,bc,ca,cb,abc,acb,bac,bca,cab,cbajava的解法为:package Stringchar;import java.util.Arrays;import java.util.LinkedList;import java.util.List;public class Combination

2015-07-14 14:51:11 297

原创 java之字符串的排序

题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有的字符串abc,acb,bac,bca,cab,cba。分析:首先,求所有可能出现在第一个位置的字符,即把第一个字符和后面所有的字符交换。            第二步,固定第一字符,求后面所有字符的排列。这个时候我们仍把后面的所有字符分成两部分:后面字符的第一个字符,以及

2015-07-14 11:08:55 375

原创 java之二叉搜索树转换为双向链表

题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。分析:可以用中序遍历树中的每一个结点,当遍历根节点时,把树看成三部分:根结点,根结点的左子树,根结点的右子树。          先将根结点转换为双向链表,再将左子树和右子树转换为双向链表。java代码: package Tree;public class C

2015-07-14 10:17:03 1046

原创 B. Vanya and Books

B. Vanya and Bookstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputVanya got an important task — he should e

2015-06-24 19:24:42 334

原创 A. Vanya and Table

A. Vanya and Tabletime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputVanya has a table consisting of 100 rows

2015-06-24 19:19:15 355

原创 java之二叉树和为某一值的路径

题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径,从树的根结点开始往下一直到叶子结点所经过的结点形成一条路径。二叉树结点定义如下:class BiTree { int value; BiTree lchild, rchild; public BiTree(int value) { this.value = value; lchild = null;

2015-06-17 16:48:19 357

原创 java之二叉搜索树的后序遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果,如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。package Tree;public class VerifySqueueofBSTM { public boolean VerifySqueueofBST(int[] squeue, int length) { if (squ

2015-06-16 22:17:49 328

原创 java之从上到下打印二叉树

题目:从上到下打印二叉树的每个节点,同一层上从左到右的顺序打印,即层次遍历。public void levelTreverse() { Queue queue = new LinkedList(); BTree node = root; queue.add(node); while (!queue.isEmpty()) { node = queue.remove();

2015-06-16 22:02:34 380

原创 java之栈的压入和弹出

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不是该压栈序列的弹出序列。分析:如果下一个弹出的数字刚好是栈顶数字,那么直接弹出。如果下一个弹出的数字不是栈顶,我们把压入序列中没有入栈的数字压入到辅助栈,直

2015-06-16 21:53:09 921

原创 java之包含min函数的栈

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push,pop的时间复杂度都是o(1).package Stackqueue;import java.util.Stack;public class StackMinMain { Stack m_data = new Stack(); Stack m_min = new Stack

2015-06-16 21:48:46 377

原创 java之顺时钟打印矩阵

题目:输入一个矩阵,按照从外向里以顺顺时针的顺序依次打印出每一个数字。例如:输入的如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10.package BitCount;public class PrintMetrix { public void

2015-06-10 15:00:48 521

转载 找工作必备知识

一、C①基本函数实现swap()reverse()strcpy()②五个存储区③内存对齐④数组名问题int a[10];int *p=a;p++;p+1;a+1;a++;//错误,数组名是常量二、C++①static的作用②const的作用③四个类型转换static_castdynamic_castconst_castre

2015-06-09 21:41:10 387

原创 java之二叉树镜像

题目:完成一个函数,输入一个二叉树,该函数输出它的镜像。

2015-06-09 21:33:55 420

原创 java之树的子结构

题目:输入两棵二叉树A和B,判断B是不是A的子结构。二叉树结点的定义如下:class BTree { String value; BTree lchild, rchild; public BTree() { } public BTree(String value) { this.value = value; lchild = null; rchild = null;

2015-06-05 19:58:51 308

原创 java之合并链表的两种方法

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序。链表的结构如下:class LNode { // 单链表的存储结构 int value; LNode next; public LNode() { } public LNode(int value) { this.value = value; this.next = null; } p

2015-06-05 17:29:23 1106

原创 java之链表反转

题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的头节点,链表的定义如下:class LNode { // 单链表的存储结构 int value; LNode next; public LNode() { } public LNode(int value) { this.value = value; this.next = null; } publi

2015-06-05 16:36:44 341

原创 链表中倒数第k个结点

题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1,2,3,4,5,6.这倒数第3个结点的值是4。 链表的定义:class LNode { // 单链表的存储结构 int value; LNode next; public LNode() { } publ

2015-05-31 22:08:28 256

原创 调整数组顺序使奇数位于偶数的前面

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在偶数的前面:package Sort;public class ReOderMain { static int[] data = { 1, 2, 3, 4, 5, 6, 7 }; public static void ReOder(int[] data, int length) { if (data ==

2015-05-31 21:43:32 317

原创 创建MySQL索引

1.创建单例索引    单例索引是最基本的索引,这是建立在数据库表中特定列上的索引。MySQL并没有限制在一个表的索引数量,然而创建索引还会对性能有影响。    可以在现有的表上创建单例索引: alter table add primary key [index-name](); alter table add [unique] key|index [index-name] (

2015-05-31 19:10:00 369

原创 java 链表结点的删除的两种方法

题目:给定一个头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。链表的定义如下:class LNode { // 单链表的存储结构 int value; LNode next; public LNode() { } public LNode(int value) { this.value = value; this.next = null; } publi

2015-05-28 21:19:10 1855

原创 打印1到最大的n位数

题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1,2,3一直到最大的3位即999.   这个题目看着简单,我们一般想到的是:package Stringchar;public class PrintNumberMain { public void PrintToNumber(int n) { int num = 1; int i = 0; w

2015-05-28 15:16:21 203

原创 数值的整数次方

题目:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不要考虑大数问题。 本题要求和c语言的库中一个pow函数相同的功能。1.全面但不高效的解法package BitCount;public class PowerMain { boolean g_invalidInput = false

2015-05-27 19:26:32 307

原创 二进制中1的个数

题目:实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如9的二进制为1001,有2位是1。因此输入为9,输出为2。1.可能引起死循环的解法:  public static int Numberof1(int a) { int count = 0; while (a != 0) { if ((a & 1) != 0) { count++; }

2015-05-27 18:43:17 292

原创 递归和循环

题目1:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列的定义如下:       f(n)=0    n=0;       f(n)=1    n=1;       f(n)=f(n-1)+f(n-2)   n>1;   很多C语言教科书在讲递归函数的时候,都会用斐波那契作为例子,代码如下: public static long Fibonacc

2015-05-27 16:13:10 354

原创 旋转数组的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,改数组的最小值为1.

2015-05-27 11:13:48 263

原创 计数器排序

计数器排序的时间复杂度是O(n),辅助空间为O(n),这个是典型的用时间换空间的方法。下面的算法导论的经典接法:package sort;import java.util.Scanner;public class CountSort { public static void main(String[] args) { Scanner reader = new Scanner

2015-05-26 20:29:04 392

原创 java快速排序

本文是算法导论上面的快速排序的方法实现:package sort;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;impor

2015-05-26 20:18:34 206

原创 用两个栈实现队列和用两个队列实现栈

题目:用两个栈实现一个队列。实现它的两个函数appendTail和deleteHead,分别完成队列尾部插入节点和在队列头部删除节点的功能。下面是java代码:package Stackqueue;import java.util.Stack;public class QueueWithTwoStacks { private Stack stack1; private Sta

2015-05-26 18:27:09 290

原创 重建二叉树

题目:输入某二叉树的先序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中没有重复的数字。例如输入的前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的头结点。二叉树结点的定义如下:class BiTree{ int value; BiTree lchild,rchild;}分析:在二叉树的先序遍

2015-05-24 19:38:53 230

原创 java数据结构之二叉树的遍历

二叉树的遍历:先序遍历二叉树的操作是:若二叉树为空,则空操作;否则1.访问根结点2.先序遍历左子树3先序遍历右子树中序遍历二叉树的操作是:若二叉树为空,则空操作;否则1.中序遍历左子树2.访问根结点3.中序遍历右子树后序遍历二叉树的操作是:若二叉树为空,则空操作;否则1.后序遍历左子树2.后序遍历右子树3.访问根结点基本代码:

2015-05-24 19:31:27 291

原创 从尾到头打印链表

题目:输入一个链表的头节点,从尾到头反过来打印每个节点的值。分析:由于链表的创建是从头节点插入的,一般是从头打印的话结果与插入的值相反即,如果是从尾部反过来打印的每个节点的值的话,与插入的顺序相同。即第一个遍历的节点最后一个输出,最后一个遍历的节点第一个输出,我们可以用栈实现这种顺序。每经过一个节点的时候,把给节点放入栈中。当遍历完整个链表之后,再从栈顶开始逐个输出节点的值,此时输出的节点的顺

2015-05-22 20:46:18 311

原创 java数据结构之带头结点的单链表

带头结点的单链表插入的数据和打印的数据是相反的,例如从左到右插入1-10的数据,打印显示的是10-1.下面是单链表的存储结构的代码如下: class LNode { // 单链表的存储结构 int value; LNode next; public LNode() { } public LNode(int value) { this.value = value; this

2015-05-22 20:18:16 999

原创 第1条 考虑用静态工厂方法代替构造器

构造器是创建一个对象实例的最基本,最通用的方法。在使用某个class的时候,一般考虑的是如何创建和初始化对象的实例。我们一般考虑的方式就是通过构造函数来完成。其实还有一种方法,也应该在每个程序员的工具箱中占一席之地。类提供了一个公有的静态工厂方法,它只是一个返回类的实例的静态方法。     下面一个是Boolean的例子,就是将boolean基本数据类型转换为Boolean对象的引用。pu

2015-05-20 11:09:20 464

原创 Singleton单例模式

设计一个类,我们只能生成该类的一个实例就是单例模式的类型。一般Singleton模式通常有几种形式存在。第一种形式:定义一个类,它的构造函数为private,它有一个static的private的该类变量,在类初始化时实例化,通过一个public的getInstance方法获取对对象的引用,继而调用其中的方法。其代码如下:public class Singleton { privat

2015-05-19 21:10:37 310

原创 LeetCode 3 Longest Substring Without Repeating Characters

Longest Substring Without Repeating Characters Total Accepted: 62866 Total Submissions: 299055My SubmissionsQuestion Solution Given a string, find the length of the longest subst

2015-05-10 20:45:11 270

空空如也

空空如也

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

TA关注的人

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