在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007
输入两个链表,找出它们的第一个公共结点。
首先相交的链表肯定不会是X形,在两个链表相交之后,两个链表后面的节点都是相等的
先拿到两个链表的 长度,然后让较长的链表先走,先走的节点个数就是两个链表长度的差值,然后两个链表每个人各走一步,判断一次,是否为相同节点。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
int func1(ListNode* Head) //求两个链表的长度
{
int count = 0;
while(Head)
{
++count;
Head = Head->next;
}
return count;
}
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
int length1 = func1(pHead1);
int length2 = func1(pHead2);
int s;
ListNode* p1 = pHead1;
ListNode* p2 = pHead2;
if(length1 > length2)
{
s = length1 - length2;
while(s--)
{
p1 = p1->next;
}
}
else
{
s = length2 - length1;
while(s--)
{
p2 = p2->next;
}
}
while(p1)
{
if(p1 == p2)
return p1;
p1 = p1->next;
p2 = p2->next;
}
}
};