上一页 1 ··· 44 45 46 47 48 49 50 51 52 ··· 60 下一页
摘要: 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路: 1.php数组完全就能实现 2.array_push 从尾部往里压入元素 3.array_shift 从头部删除元素 $list=array(); array_push($list,$node); array_shift($list); <?php ... 阅读全文
posted @ 2018-10-12 21:12 唯一客服系统开发笔记 阅读(328) 评论(0) 推荐(0)
摘要: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 思路: 1.找规律 f(1)=1 f(2)=2 f(3)=3 f(4)=5 f(n)=f(n-1)+f(n-2)这是一个斐波那契数列 2.因为调到第n个台阶时,倒数第一个台阶可以一步跳过来,倒数第二个台阶也可以一步就跳过来 非递归版本: JumpFloor(target) ... 阅读全文
posted @ 2018-10-12 20:47 唯一客服系统开发笔记 阅读(437) 评论(0) 推荐(0)
摘要: 替换空格: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路: 1.先循环一遍,找出该字符串中" "空格的个数count 2.因为要把" "空格替换成 "%20",所以,要倒着数,最后一个空格后面的元素要移动到2*count位置 3.继续往前遍历,倒数第二个空格后面直到最后空格之... 阅读全文
posted @ 2018-10-11 23:08 唯一客服系统开发笔记 阅读(831) 评论(2) 推荐(0)
摘要: 二叉树中和为某一值的路径: 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 思路: 1.二叉树的前序遍历,中左右顺序 2.把目标值target传进去,target-=val 3.target为0并且left和right都为null,达到叶... 阅读全文
posted @ 2018-10-10 22:36 唯一客服系统开发笔记 阅读(360) 评论(0) 推荐(0)
摘要: 二叉搜索树的后序遍历序列: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路: 1.后序遍历是 左右中 , 最后一个元素是根结点 2.二叉搜索树,左子树=end return true root=seq[end] index for i=start;i= root ... 阅读全文
posted @ 2018-10-09 21:26 唯一客服系统开发笔记 阅读(305) 评论(0) 推荐(0)
摘要: 二叉树的深度: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路: 1.非递归层序遍历 2.使用辅助队列,根结点先入队列 3. 循环判断队列是否为空,如果不为空就继续循环队列里面的每个结点 4. 循环队列时,当前当前结点出队列,把该结点的左右孩子入队列 TreeDepth(tree) if !tree re... 阅读全文
posted @ 2018-10-08 21:57 唯一客服系统开发笔记 阅读(478) 评论(0) 推荐(0)
摘要: 操作给定的二叉树,将其变换为源二叉树的镜像。 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / ... 阅读全文
posted @ 2018-09-29 21:01 唯一客服系统开发笔记 阅读(368) 评论(0) 推荐(0)
摘要: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 1.子树的意思是包含了一个节点,就得包含这个节点下的所有节点,两棵树同时到底 2.子结构可以是A树的任意一部分 思路: 1.第一个递归:A和B两棵树,先在A中找到与B的根结点相同的点,如果A的根不是,那就递归A的左右子树来找 2.第二个递归:从两棵树的根结点开始进行比较,遍历的过程中,如果B树为空,则... 阅读全文
posted @ 2018-09-28 22:09 唯一客服系统开发笔记 阅读(441) 评论(0) 推荐(0)
摘要: 1.图的深度优先遍历类似前序遍历,图的广度优先类似树的层序遍历 2.将图进行变形,根据顶点和边的关系进行层次划分,使用队列来进行遍历 3.广度优先遍历的关键点是使用一个队列来把当前结点的所有下一级关联点存进去,依次进行 邻接矩阵的广度优先遍历: BFS(G) for i=0;inumVertexes;i++ visited[i]=false;//检测是否访问过 ... 阅读全文
posted @ 2018-09-27 15:36 唯一客服系统开发笔记 阅读(926) 评论(0) 推荐(0)
摘要: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 1.前序遍历是中,左,右;中序遍历是左,中,右 2.前序遍历的第一个是根结点,中序遍历数组中从开始到根结点的所有是左子树,可以知道左子树的个数,根结点右边的是... 阅读全文
posted @ 2018-09-26 22:09 唯一客服系统开发笔记 阅读(353) 评论(0) 推荐(0)
摘要: 构建乘积数组给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 1. 这题的意思是 B数组的元素是A数组中所有元素的乘积,但是要排除掉当前元素2. 阅读全文
posted @ 2018-09-25 23:40 唯一客服系统开发笔记 阅读(296) 评论(0) 推荐(0)
摘要: 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 1.哈希法 2.定义备用数组,作为哈希使用,key是原数组每个元素 value是出现的次数 3.遍历哈希数组 hash for... 阅读全文
posted @ 2018-09-22 00:34 唯一客服系统开发笔记 阅读(603) 评论(0) 推荐(0)
摘要: 快速排序: 1.基于二分的思想 2.第一个作为基准数,左右各一个指针,同时扫描,右边先走,找到比基准数小的停下 左边再走,找到比基准数大的停下,左右交换 3.当左右相遇的时候,把当前的和基准数调换,递归调用 4.快速排序的最差时间复杂度和冒泡排序是一样的都是O(N2),它的平均时间复杂度为O(NlogN) quickSort &arr,left,right if left>right ... 阅读全文
posted @ 2018-09-21 16:43 唯一客服系统开发笔记 阅读(410) 评论(0) 推荐(0)
摘要: 统计一个数字在排序数组中出现的次数。 1.有序的数组查找,使用二分法 2.二分法查找第一次出现的位置,二分法查找最后一次出现的位置,end - start +1 left=getLeft(data,k) right=getRight(data,k) retun right-left+1 getLeft data,k left=0 right=arr.length-1 ... 阅读全文
posted @ 2018-09-20 22:06 唯一客服系统开发笔记 阅读(731) 评论(3) 推荐(0)
摘要: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 1.数组归并排序 2.归并排序比较左右两个堆数组中的元素大小时,进行计数,倒着比较,因为左堆倒第一如果比右堆倒第一大,那么就比右堆的所有都大 mergeSort if left<ri... 阅读全文
posted @ 2018-09-19 23:19 唯一客服系统开发笔记 阅读(386) 评论(0) 推荐(0)
摘要: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 解法1 1.数组排序,使用自定义排序规则是 a.b>b.a a 和 b互换位置 2.usort函数的使用 function costomcomp(a,b) return a.b > b.a usort(arr... 阅读全文
posted @ 2018-09-18 22:14 唯一客服系统开发笔记 阅读(378) 评论(0) 推荐(0)
摘要: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 两种方式: 1.定义一个新数组arr,遍历数组给arr赋值,arr[元素]=出现的次数 2.排序下arr,取第一个的key和value,key是目标元素,value是出现次数,验证下后... 阅读全文
posted @ 2018-09-17 21:54 唯一客服系统开发笔记 阅读(527) 评论(0) 推荐(0)
摘要: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 1.遍历数组,判断元素奇数偶数,push进新数组,空间换时间 2.插入排序的思想 空间上是原址排序 2.1从前往后遍历,判断当前的是奇数 2.2从当前的开始,从后往... 阅读全文
posted @ 2018-09-16 20:19 唯一客服系统开发笔记 阅读(437) 评论(0) 推荐(0)
摘要: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 1.利用二分法寻找数组中的最小元素 2.定义两个 指针left和right,指向数组的第一个元素和最后一个元素,定义一... 阅读全文
posted @ 2018-09-15 21:53 唯一客服系统开发笔记 阅读(287) 评论(0) 推荐(0)
摘要: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 1.二维数组,行row从左到右递增,列col从上到下递增 2.定左下角为比较点,比它大的位于它右边,因此col++,并且col=0 col=0 row=arr.length-1 while row>=0... 阅读全文
posted @ 2018-09-14 19:26 唯一客服系统开发笔记 阅读(324) 评论(0) 推荐(0)
摘要: 输入两个链表,找出它们的第一个公共结点 1.两个单链表,有公共结点,那么必然,尾部公用 2.找出链表1的长度,找出链表2的长度,长的链表减去短的链表得出一个n值 3.长的链表先走n步,两个链表再同时移动 4.两个链表相交点就是第一个公共结点 list1 list2 len1 len2 if len1 > len2 n=len1-len2 for i=0;inext els... 阅读全文
posted @ 2018-09-13 20:03 唯一客服系统开发笔记 阅读(528) 评论(0) 推荐(0)
摘要: 删除链表中重复的结点: 1.定义两个指针pre和current 2.两个指针同时往后移动,current指针如果与后一个结点值相同,就独自往前走直到没有相等的 3.pre指针next直接指向current指针的后一个,把相同的都跳过 pre=linkList current=linkList while current!=null if current->data==current-... 阅读全文
posted @ 2018-09-12 22:05 唯一客服系统开发笔记 阅读(415) 评论(0) 推荐(0)
摘要: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null 1.找链表倒数第k个结点,输入一个链表,输出该链表中倒数第k个结点。第一个指针走(k-1)步,到达第k个节点,两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了 2.原理有点像上面的,定义两个指针,一个是快指针每次走两步,一个是慢指针每次走一步,当两个相遇的时候,假设环的长度为n个... 阅读全文
posted @ 2018-09-11 23:16 唯一客服系统开发笔记 阅读(514) 评论(1) 推荐(0)
摘要: 复杂链表的复制: 1.在旧链表中每个结点的后面复制出一个结点,隔代 2.把旧链表的随机指向部分,复制到新添加的结点上 3.把新结点从旧链表中拆分出来成新链表 1. linklist=head while linklist!=null node=new Node() node->next=linklist->next linklist->next=node lin... 阅读全文
posted @ 2018-09-10 23:21 唯一客服系统开发笔记 阅读(346) 评论(0) 推荐(0)
摘要: 合并两个有序的链表为一个有序的链表: 类似归并排序中合并两个数组的部分 1.遍历链表1和链表2,比较链表1和2中的元素大小 2.如果链表1结点大于链表2的结点,该结点放入第三方链表 3.链表1往下走一步,反之亦如此 4.当两个链表中有一个结束了以后,另一个链表就可以全部放进第三方链表了 list3 while list1!=null list2!=null if list1->data... 阅读全文
posted @ 2018-09-09 22:56 唯一客服系统开发笔记 阅读(1019) 评论(0) 推荐(0)
摘要: 最大子数组问题,股票价格示例: 1.在最高价格开始向左寻找之前的最低价格 2.在最低价格开始向右寻找之后的最高价格 3.暴力求解法,尝试每队可能的买进和卖出组合,保证卖出在买进之后 key buy sell for i=0;i=low;i-- sum=sum+A[i] if sum>leftSum leftSum=sum left=i rightS... 阅读全文
posted @ 2018-09-06 21:53 唯一客服系统开发笔记 阅读(251) 评论(0) 推荐(0)
摘要: 1.常见方法分为迭代和递归,迭代是从头到尾,递归是从尾到头2.设置两个指针,old和new,每一项添加在new的后面,新链表头指针指向新的链表头3.old->next不能直接指向new,而是应该设置一个临时指针tmp,指向old->next指向的地址空间,保存原链表数据,然后old->next指向n 阅读全文
posted @ 2018-09-05 10:41 唯一客服系统开发笔记 阅读(1830) 评论(0) 推荐(0)
摘要: 1.创建头结点 2.创建新结点 3.新结点next指向头结点next 4.头结点next指向新结点 阅读全文
posted @ 2018-09-04 23:14 唯一客服系统开发笔记 阅读(349) 评论(0) 推荐(0)
摘要: 1.遍历后压入反转数组,输出2.array_unshift — 在数组开头插入一个或多个单元,将传入的单元插入到 array 数组的开头int array_unshift ( array &$array , mixed $value1 [, mixed $... ] ) 阅读全文
posted @ 2018-09-04 20:55 唯一客服系统开发笔记 阅读(389) 评论(0) 推荐(0)
摘要: 输入一个链表,输出该链表中倒数第k个结点。第一个指针走(k-1)步,到达第k个节点,两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了 阅读全文
posted @ 2018-09-04 16:49 唯一客服系统开发笔记 阅读(313) 评论(0) 推荐(0)
摘要: <?php //归并排序 function merge(&$A,$left,$mid,$right,$temp){ //7.左堆起始 $i=$left; //8.右堆起始 $j=$mid+1; //9.临时数组起始 $t=0; //10.左右堆数组都没到末尾 ... 阅读全文
posted @ 2018-08-31 14:30 唯一客服系统开发笔记 阅读(387) 评论(0) 推荐(0)
摘要: 1.利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFunc((*T)->lchild);createFunc((*T)->rchild);} 2.前序遍历:先访 阅读全文
posted @ 2018-08-30 10:58 唯一客服系统开发笔记 阅读(2086) 评论(0) 推荐(0)
摘要: 1.将单链表中终端结点的指针端由空指针改为指向头结点,单循环链表,循环链表和单链表的主要差异就在于循环的判断条件上原来是判断p->next是否为空,现在则是p->next不等于头结点,则循环未结束 2.指向终端结点的尾指针代表该循环链表 3.创建循环链表关键是头结点指向自身,最后一个终端结点指向头结 阅读全文
posted @ 2018-08-28 19:13 唯一客服系统开发笔记 阅读(612) 评论(0) 推荐(0)
摘要: 链表获取元素1.声明结点p指向链表第一个结点,j初始化1开始2.j<i,p指向下一结点,因为此时p是指向的p的next,因此不需要等于3.如果到末尾了,p还为null,就是没有查找到 插入元素1.插入元素和查找类似,找到位置后2.生成新的结点s, s->next=p->next p->next=s; 阅读全文
posted @ 2018-08-27 15:08 唯一客服系统开发笔记 阅读(755) 评论(3) 推荐(0)
摘要: 两个n位二进制数分别存储在两个n元数组A和B中,这两个整数的和存在一个n+1元的数组C中答:此问题主要是考察相加进位的问题,元素1+1 =0 并且往前进一位ADD-BINARY(A,B) C=new integer[A.length+1] carry=0 for i=A.length downto 阅读全文
posted @ 2018-08-26 11:52 唯一客服系统开发笔记 阅读(489) 评论(0) 推荐(0)
摘要: 1.PHP中的数组实际上是有序映射,可以当成数组,列表,散列表,字典,集合,栈,队列,不是固定的长度2.数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了3.想要函数的一个参数总是通过引用传递,可以在函数定义中该参数的前面加上符号 &4.PHP 的引用是别名,就是两个不同的变 阅读全文
posted @ 2018-08-24 17:41 唯一客服系统开发笔记 阅读(431) 评论(0) 推荐(0)
摘要: 理解下头结点1.头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度)。2.有了头结点后,对在第一个元素结点前插入结点和删除第一个结点,其操作与对其它结点的操作统一了。3.首元结点也就是第一个元素的结点,它是头结点后边的第一个结点。4.头 阅读全文
posted @ 2018-06-27 10:54 唯一客服系统开发笔记 阅读(2479) 评论(0) 推荐(0)
摘要: CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。 阅读全文
posted @ 2018-06-21 14:59 唯一客服系统开发笔记 阅读(434) 评论(0) 推荐(1)
摘要: 1.创建头结点,头结点的next指向null 2.把头结点赋值给一个中间变量 3.循环中创建结点, 中间变量的next指向新结点 4.新结点覆盖中间变量 c语言版: go语言版: php语言版: 阅读全文
posted @ 2018-06-11 11:31 唯一客服系统开发笔记 阅读(631) 评论(0) 推荐(0)
摘要: 1. 先创建一个头结点,不需要有数据域,头结点的next指向null 2.循环中创建结点,把头结点的next赋值给 新结点的next,相当于新结点的next指向了(头结点next所指向的) 3.把新结点赋值给头结点的next ,相当于头结点的next指向了新结点,这样就串起来了 4.头结点就相当于整 阅读全文
posted @ 2018-06-10 20:30 唯一客服系统开发笔记 阅读(385) 评论(0) 推荐(0)
上一页 1 ··· 44 45 46 47 48 49 50 51 52 ··· 60 下一页