
算法100题
rommi
这个作者很懒,什么都没留下…
展开
-
翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I” void reverseOrder(char pStr[], int begin, int end) { if(begin >= end)原创 2013-05-16 15:42:12 · 674 阅读 · 0 评论 -
第13题: 题目:输入一个单向链表,输出该链表中倒数第k 个结点。链表的倒数第0 个结点为链表的尾指针。
链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 算法实现 ListNode* FindLastK(ListNode* head, int k){ ListNode* p1=head, *p2=head; int nNode=0; while(p1->m_pNext原创 2013-05-21 16:09:38 · 1232 阅读 · 0 评论 -
第14题:
题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4 和11。 思路: 2个指针,分别从两边向中间移动,相加找到退出。 void findtwonum原创 2013-05-21 16:30:16 · 560 阅读 · 0 评论 -
第17题:
在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b 如果从头遍历,与后面字符进行比较出现次数是否为1,算法复杂度为O(n^2), 考虑以空间换时间,因为一个字符占8位。因此可用一个256位数组保存每个字符出现的次数 char原创 2013-05-24 16:04:23 · 668 阅读 · 0 评论