★创建一个函数,实现库函数strstr的功能
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char*my_strstr(char*src,char*dst)
{
assert(dst);
assert(src);
char*p=src;
char*q=dst;
while((*dst)&&(*src))
{
if(*src==*dst)//两指针内..
分类:
其他好文 时间:
2015-11-09 00:15:24
阅读次数:
263
1.交换排序算法实现这里的交换排序指的是冒泡排序和快速排序,其中快速排序的过程可以简单的理解为:选取序列首元素为枢轴值(pivot),然后分别从序列尾部找到第一个小于pivot的元素(A),从序列首部找到第一个大于pivot的元素(B),然后交换此A,B两元素,直至首尾遍历的两指针重合,一趟排序结束...
分类:
编程语言 时间:
2015-09-13 00:58:48
阅读次数:
254
(1)有1到n的链表,改成1,n-1,2,n-2,3,n-3……的链表
解答:把后半部分链表反转(怎么找后半部分,设两指针,一个走一步,一个走两步即可),然后设两指针,1指向n-1,n-2指向2,2指向n-2……即可。
(2)双向队列的的源码实现……
解答:双向链表,内存问题,链表结点池,池取出全部后,要重新new,所以要有维护池的东东……
(3)n个数里面取出前20小的数,有多少种方法,...
分类:
其他好文 时间:
2015-08-31 23:44:31
阅读次数:
209
1、指针运算
合法的指针运算有:指针与整数的加减(包含指针的自增和自减)、同类型的两指针相减、同类型指针间的比较。
【指针与整数的加减】
指针加上一个整数的结果是另一个指针。因为指针就是地址,所以,指针加上一个整数的结果就是另一个地址。那么,它指向哪里呢?这个指针所指向的类型有关。我们知道,
char 1 byte 8 bit...
分类:
编程语言 时间:
2015-07-10 00:28:22
阅读次数:
212
3Sum题目描述:给定一个整数数组,找出其中的三个数之和为0的所有组合(排除相同的组合)。分析:利用TwoSum 中两指针的思路,我们可以先将数组排序。要找到3个数之和为0,我们可以先固定一个数num[i],将i+1和len-1分别作为头指针和尾指针,当num[i]、num[i+1]与num[len...
分类:
其他好文 时间:
2015-07-09 00:30:56
阅读次数:
122
问题描述
输入一个整型数组,每个元素在0~2之间,其中0,1,2分别代表红、白、蓝。现要求对数组进行排序,相同颜色的在一起,而且按红白蓝顺序先后排列。要求时间复杂度为O(n)。
问题分析
最容易想到的是排序,比如快排,归并,堆排等,但它们的时间复杂度为O(nlogn),与题意不符。
第二种想到的是计数排序,扫描一遍过去,分别记录0,1,2的个数,然后再对数组进行赋值。时间复杂度为O(...
分类:
编程语言 时间:
2015-07-03 14:04:40
阅读次数:
225
问题描述
给出一个有序数组,就地移除重复元素,保持每个元素只出现一次,并返回新数组的长度。
问题分析
这个比较简单,直接使用两个指针,一个在前,一个在后,扫描一遍数组即可。时间复杂度为O(n^2)。
比如数组A = { 1,1, 2, 3, 3 },看下图,思想简单明了。
代码实现
#include
using namespace std;
//去除数组...
分类:
编程语言 时间:
2015-07-02 22:45:49
阅读次数:
244
问题描述
给出一个整型数组,找出所有三个元素的组合,其组合之和等于0。要求在结果集里不含有重复的组合。
举例:
输入{-2, 1, -1, 2, 1}
输出{-2, 1, 1 }
问题分析
最容易想到的是穷举法,挑选第一个元素,然后在其后挑选第二个元素,再从除已经挑选出的两个元素之外挑第三个元素,判断三者之和是否为0;第二种想到的是用回溯递归,这两种方法的时间复杂度均为O(n^3...
分类:
编程语言 时间:
2015-07-02 19:32:39
阅读次数:
189
基本思路还是使用Floyd判圈算法。指针hare每次向后移动2个节点,指针tortoise每次向后移动1个节点。如果hare最终指向尾节点则该链表无回路。否则,该链表有回路。(详见《LeetCode #141 Linked List Cycle》)
现在我们已经知道了链表有没有回路,但是如何在不使用额外空间并且不修改原链表的基础上获得回路的起始节点呢?这需要一些数学推导:
设链表起始节点为H,回路起始节点为S,两指针第一次相遇节点为M。
设回路的长度为c,S到M的距离为c1,M到S的距离为c2。...
分类:
编程语言 时间:
2015-06-17 09:37:04
阅读次数:
249
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
基本思路:
快慢两指针。
一个指针每次移动一步,另一个指针每次移动两步。如存在环,必有相遇的时候。
/**
* Definition for singly-li...
分类:
其他好文 时间:
2015-06-02 17:57:11
阅读次数:
89