基本思想: 1)首先需要一个临时空间temp用来存放合并后的元素,长度为排列好的元素总个数。 2)取两个指针,分别为左右部分数组的头元素。 3)比较指针指向元素,将较小(较大)的那个放入temp(注意相等时不做元素位置交换),并将两指针向后移动一个step。 4)循环步骤3直到其中一段数组没有剩余元 ...
分类:
编程语言 时间:
2017-09-19 00:10:13
阅读次数:
244
题目: 代码实现: 方法一:双指针思想,前后指针所指向的字符交换,直至两指针相遇,交换完毕。 方法二:反转即从字符串最后一个字符输出即可。 方法一:双指针思想,前后指针所指向的字符交换,直至两指针相遇,交换完毕。 ...
分类:
其他好文 时间:
2017-05-28 16:03:42
阅读次数:
148
题目:一个链表中包含环,请找出该链表的环的入口结点。 思路:先判断有没有环,设快慢指针,快的走两步,慢的走一步,直到指向同一个节点,此时再让快指针从头走,慢指针从刚才的位置,两指针一起走,直到指向一致 ...
分类:
其他好文 时间:
2017-04-11 09:54:20
阅读次数:
230
从前往后扫,找到一出现次数为0的数,从后面找一个出现不为0的数转化而来。设置两指针l, r来处理。 ...
分类:
其他好文 时间:
2016-11-26 17:47:24
阅读次数:
104
题目(lintcode): 1.二数之和 2.三数之和 3.最接近的三数之和 4.四数之和 取三数之和为例: (一) 普通算法,多重遍历数组,需要多重for嵌套,但严重超时。 (二) 剪枝,在外层循环中考虑有没有“不可能符合要求”的情况。 例如,在三数之和中,若两个数之和大于0,直接break。但题 ...
分类:
编程语言 时间:
2016-09-19 19:47:28
阅读次数:
127
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。首先,可以想到,用前后两个指针一个在数组首一个在数组尾同时往数组中间遍历,当遇到前指针遇到偶数后指针遇到奇数时,就将两个数交换,直到两指针相..
分类:
编程语言 时间:
2016-05-10 07:22:18
阅读次数:
178
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note: Do not modify the linked list. note: 开始时,两指针都指向h ...
分类:
其他好文 时间:
2016-05-09 20:14:56
阅读次数:
180
仍然使用龟兔赛跑方法,但还需要在这之上根据证明推倒算法: 不难证明:两指针第一次相遇的地方位于“当慢指针进入环时,快环相对于环起始点的位置”的相反位。例如: 假设一开始Fast和Slow从开始位置开始遍历这个链表。 令m = 3,表示经过三步,Slow结点到达环的起始位置,此时Fast在环的第m个位 ...
分类:
其他好文 时间:
2016-04-17 22:07:50
阅读次数:
216
一、两单链表皆不带环--->是否存在“环”及环长方法:借助于快慢指针,两指针是否存在相遇情况(存在,即存在环;反之,不存在)环长:相遇时开始计算慢指针所走过距离,即为环长intIsCycle(ListNode*_head)//是否存在环及环长(两链表不带环)
{
ListNode*fast=_head;
List..
分类:
其他好文 时间:
2016-03-28 22:00:01
阅读次数:
204
用来演示指向函数的指针。// 自增函数:将数值a加1并返回结果int inc(int a){ return(++a);}// 乘法函数:用来将a,b两指针指向的数值相乘,并将结果存于c指针指向的空间int multi(int*a,int*b,int*c){ return(*c=*a**b);}t.....
分类:
其他好文 时间:
2015-12-05 19:27:11
阅读次数:
233