- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 删除链表中的重复的结点两种解法
public static deleteDups(ListNode n){Hashtable table=new Hashtable();ListNode previous=null;while(n!=null){if(table.contains(n.data)){previous.next=n.next;}else{table.put(n.data, true)
2017-03-28 20:01:59 151
原创 判断一个字符串是否是另一个字符串旋转后的结果,假设有个函数Substring判断一个字符是否为另一个字符的子字符串并且这个函数只能用一次
boolean isRotation(String s1,String s2){if(s1.length()==s2.length()&&len>0){String s1s1=s1+s1;return isSubstring(s1,s2);}return false;}//判断一个字符串是否是另一个字符串旋转后的结果
2017-03-28 19:29:02 184
原创 若m*n矩阵中某个元素为零,则将元素所在的行与列清零
public void setzeros(int[][] martix){boolean[] row=new boolean [martix.length];boolean[] column=new boolean[martix[0].length];for(int i=0;ifor(int j=0;jif(martix[i][j]==0){row[i]=true;co
2017-03-28 19:15:57 706
原创 将字符串中的空格替换为“%20”
public void replaceSpaces(char[] str,int length){int spacecount=0,newlength,i;for(i=0;iif(str[i]=' ')spacecount++;}newlength=length+spacecount*2;//替换之后的长度str[newlength]='\0';for(int j=
2017-03-26 11:40:57 249
原创 判断字符串是否互为变位词
public String sort(String s){char content[]=s.toCharArray();java.util.Arrays.sort(content);return new String(content);}public boolean permutation(String s,String t){if(s.length()!=t.length
2017-03-26 11:18:15 486
原创 给定两个排序的数组,其中A有足够空间容纳B,实现一个方法将B容纳进A并排序
public static void merge(int a[],int b[],int lastA,int lastB){int indexA=lastA-1;//a中最后一个元素int indexB=lastB-1;//b中最后一个元素int indexMerge=lastB+lastA-1;//合并后的数组中最后一个元素if(indexA>indexB){a[indexM
2017-03-16 15:44:44 610
原创 求一个整数数组中的所有子数组和的最大值
bool g_InvalidInput=false;//判断输入是否有效int findGreatestSumOfSubArray(int *pData,int length){if((pData==null)||(lengthg_InvalidInput=true;return 0;}g_InvalidInput=false;int CurSum=0;int Gr
2017-03-13 12:22:23 425
原创 输入n个整数,找出其中最小的K个数
先进行快速排序算法,使得比第k个数小的整数都排到第k个数之前,然后第k个数的左边就是数组中最小的K个数;算法实现如下:void GetLeastNumbers(int* input,int n,int* output,int k){if(input==null||output==null||nn||kreturn;}int start=0;int end=n-1;i
2017-03-13 12:17:06 1523
原创 检查数组中超过一半的数的第二种解法
到第一个数时,让次数为1,每次遇到相同的数,次数加一,遇到不同的次数减去1;当次数为0时,让次数为1;那么数组中超过一半的肯定为最后一次次数为1时对应的那个数字,代码实现如下:int MoreThanHalfNum1(int* numbers,int length){if(CheckInvalidInput(numbers,length)){return 0;}int ti
2017-03-12 11:26:34 158
原创 检查数组中超过一半的数字
bool g_bInputInvalid=false;bool CheckInvalidArray(int* numbers,int length){//检查是否有效输入g_bInputInvalid=false;if(numbers==null&&lengthg_bInputInvalid=true;return g_bInputInvalid;}bool Check
2017-03-12 11:03:09 137
原创 打印字符串中所有字符的排列
void Permutation(char* pStr){if(Pstr==null){return;}Permutation(pStr,pStr);}void Permutation(char* pStr,char* pBegin){if(*pBegin=='\0'){printf("%s\n",pStr);}else{for(char* pch=pBeg
2017-03-11 19:21:00 252
原创 判断某数组是不是二叉搜索树的后序遍历序列
判断某数组是不是二叉搜索树的后序遍历序列:所谓二叉搜索树,是指根节点左子树结点都小于根结点,右子树结点都大于根结点;算法实现如下:bool VerifySquenceOfBST(int sequence[],int length){if(sequence[]==null || lengthreturn false;}int root=sequence[length-
2017-03-09 15:31:47 170
原创 顺时针打印矩阵
将矩阵顺时针打印出来,其中的打印一圈的功能实现:void PrintMatrixInCircle(int** numbers,int columns,int rows,int start){int endX=columns-start-1;int endY=rows-start-1;for(int i=start;iint number=numbers[start][i];
2017-03-09 14:55:10 167
原创 求二叉树的镜像二叉树
镜像二叉树与原二叉树的左右子节点相反,当交换子结点后,需要对子结点的子结点进行同样的交换操作;算法实现如下:void MirrorRecursively(BinaryTreeNode *pNode){if((pNode==null)||(pNode->m_pLeft==null&&pNode->m_pRight==null)){return ;}BinaryTree
2017-03-09 14:51:12 223
原创 二叉树的子结构判断
输入两个二叉树1和2,查看树2是否是树1的子结构;首先遍历二叉树,寻找是否有和树2头结点相同的结点;然后当树1有和树2相同的结点时,查看子结点是否相同;可用递归实现;算法实现如下:bool HasSubtree(BinaryTreeNode* pRoot1,BinaryTreeNode* pRoot2){bool result=false;if(pRoot1!=null||pR
2017-03-06 12:52:47 331
原创 合并两个排序的链表
分别用两个指针指向链表的头结点,比较这两个结点,哪个值小,就把那个值放进合并好的链表中,继续进行同样的操作;ListNode* Merge(ListNode* pHead1,ListNode* pHead2){if(pHead1==NULL){return pHead2;}else if(pHead2=NULL){return pHead1;}ListNode* pMe
2017-03-06 12:12:03 174
原创 求一个数的二进制中1的个数
第一种解法:int NumberOf1(int n){int count=0;unsigned int flag=1;while(flag){if(n & flag) 和1与运算计算结果为1表示二进制为1count++;flag=flag}return count;}第二种解法:int qNumberOf1(int n){int count=0;
2017-03-01 12:42:40 160
原创 求斐波那契数列的非递归解法;
求 0,1,1,2.........的斐波那契数列算法如下:long long Fibonacci(unsigned n){int result[2]={0,1};if(nreturn result[n];long long fibNMinusOne=1;long long fibNMinusTwo=0;long long fibN=0;for(int i=2;
2017-03-01 11:28:26 214
原创 旋转数组的最小值
int Min(int* numbers,int length){if(numbers==NULL||lengththrow new std::exception("Invalid parameters");int index1=0;int index2=length-1;int indexMid=index1;while(numbers[index1]>=numbers[
2017-03-01 10:21:54 143
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人