167 Two Sum II - Input array is sorted
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target)
{
vector<int> ans;
ans.clear();
int len=numbers.size();
int p1=0,p2=len-1;
while (p1!=p2)
{
int tmptarget=numbers[p1]+numbers[p2];
if (tmptarget==target)
{
ans.push_back(p1+1);
ans.push_back(p2+1);
break;
}
if (tmptarget<target) p1++;
else p2--;
}
return ans;
}
};
382 Linked List Random Node
1.蓄水池算法,Reservoir Sampling
http://www.cnblogs.com/afarmer/archive/2013/03/30/2991059.html
http://www.cnblogs.com/xudong-bupt/p/4053652.html
2.我的理解详见纸质笔记
3.Code
class Solution {
public:
/** @param head The linked list's head.
Note that the head is guaranteed to be not null, so it contains at least one node. */
ListNode* head;
Solution(ListNode* head)
{
this->head=head;
}
/** Returns a random node's value. */
int getRandom()
{
int ans=head->val;
ListNode* node = head->next;
int k=1;
int n=k+1;
while (node!=NULL)
{
int index=rand()%n;
if (index==0) ans=node->val;
n++;
node=node->next;
}
return ans;
}
};