摘要: 合并排序后的数组从长数组的尾部开始合并,时间复杂度O(m+n),空间复杂度O(1)class Solution {public: void merge(int A[], int m, int B[], int n) { int i=m-1; int j=n-1; int k=m+n-1; while(i>=0&&j>=0) { if(A[i]>B[j]) A[k--]=A[i--]; else A[k--]=... 阅读全文
posted @ 2013-05-19 21:46 代码改变未来 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 合并排序后的数组方法:从长数组的尾部开始,可以时间复杂度O(m+n),空间复杂度O(1)class Solution {public: void merge(int A[], int m, int B[], int n) { int i=m-1; int j=n-1; int k=m+n-1; while(i>=0&&j>=0) { if(A[i]>B[j]) A[k--]=A[i--]; else A[k-... 阅读全文
posted @ 2013-05-19 21:43 代码改变未来 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 题目不难,边界情况很多class Solution {public: int lengthOfLastWord(const char *s) { const char *s1=s+strlen(s)-1;; int i=0; while(*s1==' ')//结尾有空格 s1--; while(*s1!=' '&&s1>=s)//不含空格的情况 { i++; s1--; } return i; ... 阅读全文
posted @ 2013-05-19 21:06 代码改变未来 阅读(98) 评论(0) 推荐(0) 编辑
摘要: class Solution {public: vector<int> plusOne(vector<int> &digits) { reverse(digits.begin(),digits.end()); int s=digits[0]+1; int carry=0; if(s>=10)carry=1; else digits[0]=s; if(carry) { for(int i=0;i<digits.size();i++) { ... 阅读全文
posted @ 2013-05-19 20:45 代码改变未来 阅读(803) 评论(0) 推荐(0) 编辑
摘要: Rotate Listclass Solution {public: ListNode *rotateRight(ListNode *head, int k) { if(head==NULL)return NULL; ListNode *p=head; int n=0; while(p->next) { p=p->next; n++; } n++; k=k%n; p->next=head; ListN... 阅读全文
posted @ 2013-05-19 20:32 代码改变未来 阅读(330) 评论(0) 推荐(0) 编辑
摘要: Merge Intervals合并区间/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */ bool comp(const Interval &a, const Interval &b){ if(a.start==b.start)return a.end<b.end; ... 阅读全文
posted @ 2013-05-19 20:10 代码改变未来 阅读(2233) 评论(0) 推荐(0) 编辑