leetcode 100题成就!!!
(1) Reverse Linked List II
class Solution {
public:
ListNode *reverseBetween(ListNode *head, int m, int n) {
ListNode *begin,*end, *pre, *cur;
ListNode init(0);
init.next=head;
begin=&init;
if(m==n)
return head;
if(m>1)
for(int i=0;i<m-1;i++)
begin=begin->next;
end=begin->next;
pre=begin->next;
cur=pre->next;
for(int i=0;i<n-m;i++)
{
ListNode *tmp=cur->next;
cur->next=pre;
pre=cur;
cur=tmp;
}
begin->next=pre;
end->next=cur;
return init.next;
}
};
(2) Add Binary
class Solution {
public:
string addBinary(string a, string b) {
int a_ind=a.size()-1, b_ind=b.size()-1;
int flag=0;
string ret;
ret.clear();
while(a_ind >= 0 && b_ind >= 0)
{
int sum= (a[a_ind]-'0') + (b[b_ind]-'0') + flag;
flag=sum/2;
sum%=2;
ret=char(sum+'0') +ret;
a_ind--;
b_ind--;
}
if(a_ind>=0)
{
while(a_ind>=0)
{
int sum= (a[a_ind]-'0') + flag;
flag=sum/2;
sum%=2;
ret=char(sum+'0') +ret;
a_ind--;
}
}
if(b_ind>=0)
{
while(b_ind>=0)
{
int sum= (b[b_ind]-'0') + flag;
flag=sum/2;
sum%=2;
ret=char(sum+'0') +ret;
b_ind--;
}
}
if(flag == 1)
{
ret='1' + ret;
}
return ret;
}
};