自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (1)
  • 收藏
  • 关注

原创 java上传文件

Upload File (Using commons-fileupload-1.2.2.jar tool) File Upload <form name="uploadform" method="post" action=

2011-09-09 12:35:39 406

原创 打靶 (排列组合)

打靶,从1环到10环,打中几环就得几分,如果脱靶得0分,共打10次,问得到90分的可能性有几种?思路:排列组合问题,首先想到递归。调试中出现栈溢出,因此要注意尽量去掉分支。public class Shoot { static int times = 0; static void shoot(int sum, int count) { if((90-su

2011-06-17 21:18:00 1623

原创 快速找出第K大的元素 (快速排序)

快速排序算法:每次找到元素在有序数组中的最终位置(前面的数都比它小,后面的数都比它大)。因此,在算法中,将比第K大数小的都放在它的前面,大的放后面,有效快速找出目标数。时间复杂度接近于O(N) public class Qksort { public static void main(String[] args) { int[] nums = new int[]{7,9,8,

2011-06-05 23:46:00 4739

原创 最大公约数 (欧几里得算法)

思想:两个整数x,y(x>0,y>0)的最大公约数等于y与x%y的最大公约数。 y=at, x=at+x%y, 所以x,y(x>0,y>0)的最大公约数等于y与x%y的最大公约数

2011-05-31 20:31:00 727

原创 不用比较符判断两个数的大小 (移位)

解决思路:利用移位来判断结果的符号位。

2011-05-31 13:36:00 2239

原创 一堆数是否连续 (异或)

题目:给出一堆数,判断是否连续。要求效率最高。思路:遍历一次,找出最大与最小。如果最大减最小为数组长度,且数组内没有重复,即为符合要求。其中,判断重复,使用异或的效率最高。最终时间为O(n)。

2011-05-31 11:30:00 2873

原创 堆排序及应用

public class HeapSort { //堆排序 static void shift(int[] nums, int low, int high) { int i=low, j=2*low, temp; temp = nums[i]; while(j=2; i--) { temp = nums[i]; nums[i] = nums[1]; nums[1] = temp; shift(nums,

2011-05-29 21:27:00 1403

原创 一次遍历,求单链表倒数第N个节及中间节点

<br />求倒数第N个节点思路:“标尺”。在遍历时一个空间始终存储着离它距离为N的节点的引用。<br /> <br />中间节点思路:联想到“烧一跟香需要一小时,两头同时点着烧完需半小时”原理。一个速度为1的遍历,同时有一个速度为2的遍历,当速度为2的遍历结束时,速度为1的就遍历到中间节点。<br />此思路可以延伸到一次遍历找到任意1/n(长度的任意1/n)的节点位置。<br /> <br />思路清晰后,实现就很简单,代码略。

2010-11-14 12:11:00 1412

原创 随机输出一组数字 (洗牌算法)

要求高效。时间上高效必然是空间上换来的,思路关键为: boolean[] nm = new boolean[100]; 将出现过的数字在数组中做下标记。时间复杂度为 O(n)代码如下:public class NoRepeatNum { public static void main(String[] args) {  int[] num = create(100);  for(int i : num)    System.out.print(i + " ");  System.out.println();

2010-11-13 17:17:00 1095

原创 输入3个数,找出共同数字

<br />题目: 输入3个数,输出具有的共同数字(如果存在)。例如,输入123,245,782则输出:2; 输入313,123,431则输出1,3。<br /> <br />为了实现高效,实现代码的时间复杂度与输入数字的位数成正比。<br />思路关键为: int[] num = new int[10]; num数组存储的是每个数字出现的个数,下标为该数字,值为此数字的个数。<br /> <br />实现代码如下:<br />import java.util.*;<br />public class Te

2010-11-13 16:40:00 1329

原创 回旋打印

题目: “转着圈”打印,先给出运行结果图输入3时:              输入4时:           输入5时: 这个题想的时间较长,其实一想到二维数组就好办,就是纯粹的数学归纳问题了,给出我的代码如下:public class Test { public static void p(int n) {  int[][] num = new int[n][n];  int a = 1;  if(n%2==0) {   for(int r=0; r    for(int i=r; i     num[r

2010-11-13 16:20:00 717

原创 求子串和的最大值

题目描述:有31,-41,59,26,-53,58,97,-93,-23,84十个数。SUM(N,M)表示从第N个数到到第M个数的和。例如:SUM(2,3)=-41+59=18。问:最大的和是多少?对应的N和M是多少?要求高效,考虑数组所有可能出现的情况。下午想了

2010-11-13 16:07:00 1527

数据抽象与面向对象.pdf

```````````````````````````

2010-07-09

空空如也

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

TA关注的人

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