Redian新闻
>
Prepaid mastercard 丢了,怎么办
avatar
Prepaid mastercard 丢了,怎么办# Money - 海外理财
s*s
1
1. merger sort a single linked list
2. find minimum k from two sorted array
我写得又长又臭,求短小精悍,清晰易懂的C++ codes.
avatar
s*r
2
好几个月几个月以前买的master prepaid debit card,后来用了一次,当时以为用掉
了,就扔了,最近发现那个transaction被
declined, 所以钱还在那张卡里
我知道在哪里买的卡,也知道卡的后四位,这怎么处理啊,谢谢
能挂失吗?
avatar
a*n
3
第二题
int findKthSmallest(int A[], int m, int B[], int n, int k) {
if (m>n) return findKthSmallest(B,n,A,m,k);
if (m==0) return B[k-1];
if (k==1) return min(A[0], B[0]);
int i = min(m-1,k/2);
int j = k-1-i;
int Ai_1 = (i==0)?INT_MIN:A[i-1];
int Bj_1 = (j==0)?INT_MIN:B[j-1];
int Ai = (i==m)?INT_MAX:A[i];
int Bj = (j==n)?INT_MAX:B[j];
if(Ai_1if(Bj_1if(Ai==Bj) return Ai;
if (Aireturn findKthSmallest(A,i,B+j+1, n-j-1, k-j-1);
}
avatar
d*0
4
不知道能否挂失
avatar
e*s
5
有没有对空间要求?只能用原来的list?
avatar
b*7
7
1. merger sort a single linked list
template
ListNode * mergeHelper(ListNode * left, ListNode * right)
{
assert(left != NULL && right != NULL);
ListNode * head = NULL;
if(left->val < right->val)
{
head = left;
left = left->next;
}
else
{
head = right;
right = right->next;
}
while( left != NULL && right != NULL)
{
if(left->val < right->val)
{
head->next = left;
left = left->next;
}
else
{
head->next = right;
right = right->next;
}
head = head->next;
}
head->next = (left != NULL) ? left : right;
return head;
}
template
pair *, ListNode *> partitionHelper(ListNode * head)
{
assert(head != NULL && head->next != NULL);
ListNode * slow = head;
ListNode * fast = head;
while(fast != NULL && fast->next != NULL)
{
slow = slow->next;
fast = fast->next->next;
}
return make_pair(head, slow);
}
template
ListNode * mergeSort(ListNode * head)
{
if(head == NULL || head->next == NULL)
return head;
auto r = partitionHelper(head);
ListNode * left = mergeSort(r.first);
ListNode * right = mergeSort(r.second);
return mergeHelper(left, right);
}
2. find minimum k from two sorted array
template
T findkthElem(T A[], int len1, T B[], int len2, int k)
{
assert(k> 0 && k <=len1+len2 && len1 >= 0 && len2 >= 0);
if(len1 == 0) return B[k-1];
if(len2 == 0) return A[k-1];
if(k == 1) return min(A[0], B[0]);
int k1 = k/2;
int k2 = k - k1;
if(k1 > len1)
{
k1 = len1;
k2 = k - k1;
}
if(k2 > len2)
{
k2 = len2;
k1 = k - k2;
}
if(A[k1-1] < B[k2-1])
{
return findkthElem(A+k1, len1 - k1, B, len2, k2);
}
else
{
return findkthElem(A,len1, B+k2, len2-k2, k1);
}
}
avatar
s*s
8
多谢楼上的几位。
avatar
s*s
9
学习重写了一遍。不太理解 partitionHelper为什么要返回head in the pair?在
mergeSort()里,
ListNode *left = mergeSort(head);
就可以了吧?
另外,这个megersort的复杂度是O(NlgN)?

【在 b******7 的大作中提到】
: 1. merger sort a single linked list
: template
: ListNode * mergeHelper(ListNode * left, ListNode * right)
: {
: assert(left != NULL && right != NULL);
: ListNode * head = NULL;
: if(left->val < right->val)
: {
: head = left;
: left = left->next;

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。