java
文章平均质量分 52
cfcf0517
这个作者很懒,什么都没留下…
展开
-
链表的java实现以及基本的增加,删除,排序操作
首先是存储节点信息的数据类package com.list;public class Node { Node next=null; int data; public Node(int data){ this.data=data; }}链表的基本操作package com.list;public class MyLinkedList { Node head=null原创 2015-06-28 22:41:26 · 440 阅读 · 0 评论 -
java中String的常用方法
java中String的常用方法1、length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length();2、charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b'3、 g原创 2015-06-30 14:33:38 · 309 阅读 · 0 评论 -
面试题14:调整数组顺序是奇数位于偶数前面
/*面试题14 题目:输入一个整数数组,实现一个函数来调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于 数组的后半部分。 简单的思路是:扫描数组,碰到一个偶数,拿出来,把数组后面的数字向前移动,数组末尾出现一个空位,把这个偶数放 入空位。每碰到一个偶数需要移动O(n)个数字,因而总的时间复杂度是O(n*n)。 思路二:可以维护两个指针,一个指向数组的第一个,向原创 2015-06-29 21:32:02 · 290 阅读 · 0 评论 -
java集合类
讲集合collection之前,我们先分清三个概念:colection 集合,用来表示任何一种数据结构Collection 集合接口,指的是 java.util.Collection接口,是 Set、List 和 Queue 接口的超类接口Collections 集合工具类,指的是 java.util.Collections 类。一、Collection 接口Colle原创 2015-06-30 15:37:08 · 270 阅读 · 0 评论 -
面试题16:反转链表
/*面试题16 题目:定义一个函数,输入链表的头结点,反转该链表并输出反正链表的头结点。链表定义如下: struct ListNode { int m_nValue; ListNode* m_pNext; }; 仔细分析题目,为了避免链表发生断裂,需要定义三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。 经常出现的3中错误: 输入NULL或链表只有原创 2015-07-01 14:36:21 · 351 阅读 · 0 评论 -
判断两个字符串是否由相同的字符组成
package com.String;import java.util.Scanner;/* * 1.常用的方法是排序,比较是否相同,时间复杂度为O(n*logn). * 2.申请一个大小为256的数组来记录各个字符出现的次数,并初始化为0,然后遍历第一个字符串, * 将字符串中字符对应的ASCII码值作为数组下标,把对应数组的元素+1,然后遍历第二个字符 * 串,把数组中对应的元素原创 2015-07-01 16:07:46 · 823 阅读 · 0 评论 -
JDBC连接数据库
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1、加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)实现。 例如: try{ /原创 2015-06-30 19:59:59 · 287 阅读 · 0 评论 -
二叉树的构建和先序,中序,后序遍历
public class Node { public int data; public Node left; public Node right; public Node(int data){ this.data=data; this.left=left; this.right=right; }}public class BinaryTree { private Nod原创 2015-07-01 15:35:12 · 343 阅读 · 0 评论 -
面试题15:链表中倒数第k个结点
/*面试题15 题目:输入一个链表,输出该链表中的倒数第k个结点。本题从1开始计数,即链表的尾点是倒数第1个结点。 常规思路:遍历一次链表得到结点数n,再从头开始的第n-k+1个结点就是倒数第k个结点。也就是遍历两次链表。 一次遍历的方法:设置两个指针。第一个指针从头开始向前走k-1步,从第k步开始第二个指针也从头开始遍历。当第一个指针 到达尾结点时,第二个指针正好是倒数第k个结点原创 2015-06-30 22:02:05 · 366 阅读 · 0 评论 -
观察者模式
观察者模式定义: 定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并且自动更新观察者模式6大方面: 1,目标与观察者之间的关系 2,单向依赖 3,命令建议 第一 目标接口的定义,建议在名称后面跟Subject第二 观察者接口的定义,建议在名称后面跟Observer第三 观察者接口的更新方法,原创 2015-07-08 22:19:45 · 250 阅读 · 0 评论 -
工厂模式
工厂模式概念:实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式抽象工厂模式的工厂方法模式的扩展。工厂模式的意图:定义一个接口来创建对象,但是让子类决定哪些类需要被实例化。工厂方法把实例化的工作推迟到子类中去实现。什么情况下适合工厂模式?有一组类似的对象需要创建。在编码时不能预见需要创建哪种类的实例。系统需要考虑扩展性,不应该依原创 2015-07-08 16:58:07 · 321 阅读 · 0 评论 -
面试题37:两个链表的第一个公共结点
/* * 面试题37:两个链表的第一个公共结点 题目:输入两个链表,找出他们的第一个公共结点。 * * 从定义可以看出,这是单向链表。如果有公共结点,之后他们的所有结点都是重合的,不可能分叉,拓扑形状像一个Y而不是X。 * 思路1:可以把两个链表的结点放入两个栈,这样两个链表的尾结点就是栈顶,接下来比较栈顶结点是否相同。 * 直到找到最后一个相同的结点。空间复杂度和时间复杂度原创 2015-07-02 15:34:57 · 282 阅读 · 0 评论 -
TCP实现客户端和服务器的通信
server.javapackage com.socket;import java.io.*;import java.net.*;public class server { public static void main(String[] args) { BufferedReader br=null; PrintWriter pw=null; try { Ser原创 2015-07-02 10:38:42 · 433 阅读 · 0 评论 -
面试题29:数组中出现次数超过一半的数字
/*面试题29:数组中出现次数超过一半的数字 *题目:数组中有一个数字的出现次数超过了数组长度的一半,找出这个数字。 *常规的算法是先对数组排序,排序的时间复杂度是O(nlogn)。 *不需要改变数组的O(n)的算法。在遍历数组的时候保存两个值:数组中的数字和次数。当遍历到下一个数字时, *如果和之前保存的数字相同,次数加1;不同则次数减1.次数为0,则保存下一个数字并把次数设为1.我们要原创 2015-07-02 22:18:05 · 291 阅读 · 0 评论 -
Two Sum
题目:Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target,原创 2015-07-09 19:32:37 · 320 阅读 · 0 评论 -
Longest Substring Without Repeating Characters
题目:Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length原创 2015-07-10 16:34:32 · 274 阅读 · 0 评论 -
数组中重复元素最多的数
import java.util.*;/* * 如何寻找数组中重复次数最多的数 * 通过引入Map映射表来记录每一个元素出现的次数,然后判读次数大小,进而找到重复次数最多的元素 */public class findMostFrequentArray { public static int find(int[] array){ int result=0; int len=arr原创 2015-07-03 11:37:19 · 544 阅读 · 0 评论 -
数组实现栈的代码
/* * 数组实现栈的代码 */import java.util.Arrays;public class testMyStack { private Object[] stack; private int size;//数组中存储元素的个数 public testMyStack(){ stack=new Object[10];//初始长度为10 } public bool原创 2015-07-02 16:11:32 · 356 阅读 · 0 评论 -
面试题31:连续子数组的最大和
/* * 面试题31:连续子数组的最大和 * 题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n). * 如果要确定最大子数组的位置,需要记录子数组的起始和结束位置 * 解题方法有两种,一是分析数组的规律,二是用动态规划法。 * 分析:当以第i个数字结尾的子数组中所有数字的和小于0时,如果把这个负数与第i原创 2015-07-03 16:56:35 · 277 阅读 · 0 评论 -
Add Two Numbers
Add Two Numbers You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers原创 2015-07-10 10:25:33 · 303 阅读 · 0 评论 -
Spiral Matrix II
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.For example,Given n = 3,You should return the following matrix:[[ 1, 2, 3 ], [ 8, 9, 4 ], [原创 2015-07-25 20:28:07 · 219 阅读 · 0 评论 -
Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4],the contiguous subarray [4,−1,2,1] ha原创 2015-07-25 18:57:20 · 203 阅读 · 0 评论 -
Merge Intervals
Given a collection of intervals, merge all overlapping intervals.For example,Given [1,3],[2,6],[8,10],[15,18],return [1,6],[8,10],[15,18]./** * Definition for an interval. * public class Int原创 2015-07-26 10:53:00 · 218 阅读 · 0 评论 -
一个使用hibernate的示例
1.创建一个表create table Students(ID int primary key,name varchar(20),gender varchar(20),birthday date,address varchar(100));2.在Eclipse中创建一个工程,导入相关的类库,Hibernate需要hibernate3.jar,访问数据库的驱动包m原创 2015-07-05 10:42:40 · 393 阅读 · 0 评论 -
Anagrams
Given an array of strings, return all groups of strings that are anagrams.Note: All inputs will be in lower-case.题目的意思是说字符串数组中由相同字母组成但字母顺序不同的字符串的集合。如“abc”和“bac”。将字符串转换为字符数组排序,再转换为字符串。使用map的key原创 2015-07-25 10:36:17 · 170 阅读 · 0 评论 -
找出数组中第二大的数
/* * 如何找出数组中第二大的数 * 设置两个变量,一个保存最大值,一个保存第二大值。遍历数组,如果元素比最大数大,第二大数更新为最大数, * 更新最大数为元素值;否则与第二大数比较,大于第二大数则更新。 */public class SecondMax { public static int FindSecondMax(int[] arr){ int maxNumber=arr原创 2015-07-05 16:32:48 · 620 阅读 · 0 评论 -
数组中两两相加等于20的组合种数
/* * 如何求数组中两两相加等于20的组合种数 * 对数组排序,时间复杂度为O(nlogn),设置begin和end分别从前向后,从后向前遍历,当arr[being]+arr[end]<20时, * begin++,大于20时,end--。 */import java.io.IOException;import java.util.Arrays;import java.util.S原创 2015-07-05 17:05:44 · 1335 阅读 · 0 评论 -
Pow(x, n)
Implement pow(x, n).一个数的32次方,只要知道16次方再求平方即可,依次类推,只要五次乘法:先求平方,再求4次方,8次方,16次方,32次方。奇数则乘以x。public class Solution { public double myPow(double x, int n) { if(n<0) return 1/power(原创 2015-07-25 13:49:05 · 291 阅读 · 0 评论 -
Spiral Matrix
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.For example,Given the following matrix:[[ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]You原创 2015-07-25 20:21:32 · 260 阅读 · 0 评论 -
N-Queens II
Follow up for N-Queens problem.Now, instead outputting board configurations, return the total number of distinct solutions.对于一个4皇后问题,声明一个长度为4的数组(因为行数为4)。usedColumns[] = [1,0,2,3]表达含义是:当前4个原创 2015-07-25 15:14:08 · 222 阅读 · 0 评论 -
寻找数组中的最大值和最小值
/* * 如何寻找数组中的最大值和最小值 * 维持两个变量min,max,每次比较相邻的两个数,较大者与max比较,较小者与min比较,通过比较找出最值。比较次数为1.5N次。 */public class MaxMin { static int Max; static int Min; public static void GetMaxAndMin(int[] arr){ if原创 2015-07-05 16:16:43 · 479 阅读 · 0 评论 -
Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).You may assume that the intervals were initially sorted according to their start times.Exa原创 2015-07-27 14:16:34 · 305 阅读 · 0 评论 -
数组或字符串循环右移k位
/* * 如何把一个数组循环右移k位 * 设计这样一种算法,先逆序后k位,再逆序前n-k位,再逆序全部数组。 * 如12345678,右移2位:逆序后2位,变为12345687,逆序前6位,变为65432187, * 全逆序,变为78123456,即为右移k位 */import java.util.Scanner;public class shift_k { public sta原创 2015-07-05 22:05:26 · 873 阅读 · 0 评论 -
数组中第k小的数
/** * 选取temp=arr[i]作为枢纽,比他小的放他左边,大的放右边,然后判断temp的位置,如果他的位置为k-1, * 他就是k小的数;如果他小于k-1,那么k小的数一定在他右边,采用递归在右边继续查找;大则查找左边。 */import java.util.Scanner;public class getKMin { public static int quickSort(原创 2015-07-06 16:57:32 · 442 阅读 · 0 评论 -
求数对之差的最大值
/** * 数组中的数字减去它右边子数组的一个数字的最大差值 * 设置两个变量diff和max保存差值的最大值和遍历到当前数字的最大数字。 * @author chen */public class getMax { public static int max(int m,int n){ return (m>n)?m:n; } public static int getMax(原创 2015-07-06 17:18:31 · 454 阅读 · 0 评论 -
快速排序的java版本
/* * 快速排序的基本思想: 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小, * 则分别对这两部分继续进行排序,直到整个序列有序。 */public class quickSort { public int partion(int[] list, int low, int high) { int tmp = list[lo原创 2015-07-06 21:51:14 · 324 阅读 · 0 评论 -
Rotate List
Given a list, rotate the list to the right by k places, where k is non-negative.For example:Given 1->2->3->4->5->NULL and k = 2,return 4->5->1->2->3->NULL.public class Solution { public st原创 2015-07-27 21:31:45 · 246 阅读 · 0 评论 -
Permutation Sequence
The set [1,2,3,…,n] contains a total of n! unique permutations.By listing and labeling all of the permutations in order,We get the following sequence (ie, for n = 3):"123""132""213""231""312""32原创 2015-07-27 20:51:48 · 256 阅读 · 0 评论 -
数组中两个元素的最小距离
/** * 给定一个数组,数组中含有重复元素,给定两个数字,求这两个数字在数组中出现位置的最小距离。 * 当遇到n1时,记录下当前下标n1_index,当遇到n2时,记录下当前下标n2_index,比较 * n1_index与n2_index的差和记录最小距离的变量min_dist的大小。 * @author chen */public class minDistance { pub原创 2015-07-06 20:00:57 · 1281 阅读 · 0 评论 -
求数对之差的最大值
/** * 数组中的数字减去它右边子数组的一个数字的最大差值 * 设置两个变量diff和max保存差值的最大值和遍历到当前数字的最大数字。 * @author chen */public class getMax { public static int max(int m,int n){ return (m>n)?m:n; } public static int getMax(原创 2015-07-06 17:19:09 · 534 阅读 · 0 评论