随笔分类 -  剑指Offer

剑指Offer:连续子数组的最大和
摘要:题目: 输入一个整型数组, 数组里有正数也有负数. 数组中的一个或连续的多个整数组成一个子数组. 求所有子数组的和的最大值. 要求时间复杂度为O(n)#include int maxsum_subarray(int a[], int n){ if( a==NULL || n curmax ) ... 阅读全文
posted @ 2014-07-28 13:58 DayByDay 阅读(236) 评论(0) 推荐(0)
剑指Offer:找出数组中出现次数超过一半的元素
摘要:题目:找出数组中出现次数超过一半的元素解法:每次删除数组中两个不同的元素,删除后,要查找的那个元素的个数仍然超过删除后的元素总数的一半#include int half_number(int a[], int n){ if( a == NULL || n void find(int a[], ... 阅读全文
posted @ 2014-07-27 20:14 DayByDay 阅读(527) 评论(0) 推荐(0)
剑指Offer:二进制中1的个数
摘要:题目:输入一个整数,输出该数二进制表示中1的个数。// 二进制中1的个数#include int wrong_count_1_bits(int n) // 错误解法: 当n为负数时, n>>=1右移, 最高位补1, 陷入死循环{ int count = 0; while(n) { ... 阅读全文
posted @ 2014-07-24 19:45 DayByDay 阅读(318) 评论(0) 推荐(0)
剑指Offer:互为变位词
摘要:// 判断两个单词是否互为变位词: 如果两个单词中的字母相同,并且每个字母出现的次数也相同, 那么这两个单词互为变位词#include #include int is_anagram(char *s1, char *s2) // 判断两个数是否互为变位词, 若是返回1{ if(strlen(s... 阅读全文
posted @ 2014-07-24 01:39 DayByDay 阅读(304) 评论(0) 推荐(0)
剑指Offer:从第一个字符串中删除第二个字符串中出现过的所有字符
摘要:// 从第一个字符串中删除第二个字符串中出现过的所有字符#include char* remove_second_from_first( char *first, char *second ){ if( first == NULL || second == NULL ) { ... 阅读全文
posted @ 2014-07-24 01:18 DayByDay 阅读(705) 评论(0) 推荐(0)
剑指Offer:第一个只出现一次的字符
摘要:题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",这输出'b'// 第一个只出现一次的字符#include char first_not_repeat_char(char *s){ int count[256]={0}; char *pkey; if( s=... 阅读全文
posted @ 2014-07-24 01:01 DayByDay 阅读(229) 评论(0) 推荐(0)
剑指Offer:打印从1到最大的n位数
摘要:题目:输入数值n,按顺序打印从1到最大的n位数,例如输入n=3,则从1,2,3,一直打印到999陷阱:若使用循环遍历 1- 999...9 并依次输出,当位数n过大时,无论将其存入int或long或long long都会溢出,故使用字符串来模拟数字加法#include #include #inclu... 阅读全文
posted @ 2014-07-23 23:29 DayByDay 阅读(350) 评论(0) 推荐(0)