
每日算法
文章平均质量分 57
little_angel
这个作者很懒,什么都没留下…
展开
-
求子数组的最大和
题目:求子数组的最大和 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n) 。 例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5 ,和最大的子数组为 3, 10, -4, 7, 2 ,因此输出为该子数组的和18 。 分析: 如果第一次遇见这样的题目,在时间复转载 2013-04-18 14:28:41 · 671 阅读 · 0 评论 -
求第一个只出现一次的字符(来源于剑指名企offer)
char FirstRepeatChar(char *inputStr) { if(inputStr==NULL) return '\0'; int tableSize=256; int * hashTable=new int[tableSize]; for(int i=0; i<tableSzie;i++)原创 2013-07-31 17:04:19 · 888 阅读 · 1 评论 -
求两个链表的第一个公共节点(来源于剑指名企offer)
思路: (1)首先, 分别遍历两个链表,得到两个链表的长度 shortLen,LongLen. (2)然后,先让长链表从头遍历LongLen-shortLen步;短链表不便利 (3)接着, 短链表和长链表同步遍历;则第一个相同节点就是所求的第一个公共节点 时间复杂度为0(m+n) int getListLen(ListNode *pHead) { int l原创 2013-07-31 19:55:02 · 859 阅读 · 0 评论 -
求数组中的逆序对(来源于剑指名企offer)
思路: 利用归并排序的思想,一边归并排序,一边求逆序对。时间复杂度为O(n log n) 步骤:递归实现 (1)现将数组拆分成2两部分,统计出子数组内部的逆序对left、right; (2)然后再统计出两个相邻子数组之间的逆序对count。在统计过程中,对数组进行排序。(归并过程) (3)最终的逆序对个数=left+right+count; int inversePairs(原创 2013-07-31 21:06:47 · 1045 阅读 · 0 评论