精华内容
下载资源
问答
  • 请问各位老师们 在css中的交集选择器应该怎么理解 可能的话最好有一个比较经典的例题 ps因为我的基础不是特高所以例题要简单一点 谢谢
  • 文章目录1 例题 1 例题 #include <bits/stdc++.h> using namespace std; typedef int ElemType; typedef struct ListNode { int val; ListNode *next; //ListNode(int x):val(x),next(NULL){} }ListN....

    1 例题

    在这里插入图片描述
    在这里插入图片描述

    #include <bits/stdc++.h>
    
    using namespace std;
    
    typedef int ElemType;
    
    typedef struct ListNode
    {
        int val;
        ListNode *next;
        //ListNode(int x):val(x),next(NULL){}
    }ListNode;
    
    typedef struct ListNode *LinkList;
    
    void Create(LinkList *L ,int EndTag);
    int locate_elem(LinkList L ,ElemType e);
    void Insert_elem(LinkList *L,int i,ElemType e);
    void Delete_elem(LinkList *L,ElemType e);
    void inter_sec(LinkList *A,LinkList *B);
    void uni(LinkList *A,LinkList *B);
    void show_afterSort(LinkList A);
    
    int main()
    {
        //freopen("1.txt","r",stdin);
        std::ios::sync_with_stdio(false);
    
        int end_tag;
        cin>>end_tag;
    
        LinkList A_;
        LinkList B_;
    
        Create(&A_,end_tag);
        LinkList pa=A_;
        pa=pa->next;
        cout<<"A is created as: ";
        while(pa)
        {
            cout<<pa->val<<" ";
            pa=pa->next;
        }
        cout<<endl;
    
        int ind;
        int ele;
        cin>>ind>>ele;
        Insert_elem(&A_,ind,ele);
    
        int elem;
        cin>>elem;
        Delete_elem(&A_,elem);
    
        int find_ele;
        cin>>find_ele;
        locate_elem(A_,find_ele);
    
        int not_find;
        cin>>not_find;
        locate_elem(A_,not_find);
    
        int end_tag2;
        cin>>end_tag2;
    
        Create(&B_,end_tag2);
        LinkList pb=B_;
        pb=pb->next;
        cout<<"B is created as: ";
        while(pb)
        {
            cout<<pb->val<<" ";
            pb=pb->next;
        }
        cout<<endl;
    
        inter_sec(&A_,&B_);
        uni(&A_,&B_);
        show_afterSort(A_);
    
        free(A_);
        free(B_);
    
        return 0;
    }
    
    /*
    * 建立 带 表头结点的单线性链表L(尾插法)
    * L为头结点
    */
    void Create(LinkList *L ,int EndTag)
    {
        LinkList p,r;
    
        int tmp;
        cin>>tmp;
    
        *L=(LinkList)malloc(sizeof(ListNode));
    
        r=*L;//r为指向尾部的节点
    
        while(tmp!=EndTag)
        {
            p=(ListNode*)malloc(sizeof(ListNode));//产生新节点
            p->val=tmp;
    
            /*尾插法*/
            r->next=p;
            r=p;
    
            cin>>tmp;
        }
    
        r->next=NULL;//表示当前链表结束
    
    }
    
    
    /*  寻找元素,并返回在链表中的位置
    *   在指定链表L(注意没用LinkList *L,By value,非By reference)里面寻找elem
    *
    */
    int locate_elem(LinkList L ,ElemType e)
    {
        int i=0;
    
        LinkList tmp;
        tmp=L->next;
    
        while(tmp)
        {
            i++;
            if(e==tmp->val)
                {
                    cout<<e<<" is located at index of "<<i<<endl;
                    return 1;
                }
            tmp=tmp->next;
        }
    
        cout<<e<<" is not found"<<endl;
        return 0;
    }
    
    /*
    * 插入元素,向*L这个链表插入元素
    * By reference,函数参数传递地址,以便在主函数里面可以修改链表
    *
    */
    void Insert_elem(LinkList *L,int i,ElemType e)//By reference,函数参数传递地址,以便在主函数里面可以修改链表
    {
        LinkList tmp;
        tmp=*L;
        //tmp=tmp->next;//tmp这个时候是第一个元素
    
        int j=1;
        while(tmp&&j<i)
        {
            j++;
            tmp=tmp->next;
        }
    
        //tmp这个时候就是链表第i个元素,开始插入
        LinkList inse;
        inse=(LinkList)malloc(sizeof(ListNode));//产生新节点
        inse->val=e;
        inse->next=tmp->next;
        tmp->next=inse;//巨他妈呢坑
    
        LinkList p=*L;
        p=p->next;
        cout<<"After inserted A is ";
        while(p)
        {
            cout<<p->val<<" ";
            p=p->next;
        }
        cout<<endl;
    }
    
    
    /*
    ** 删除链表*L中的元素,函数参数By reference
    */
    void Delete_elem(LinkList *L,ElemType e)
    {
        LinkList tmp;
        tmp=*L;//tmp这个时候是链表的第一个元素
    
        LinkList q;//用来回收被删除的节点
        while(tmp->next)
        {
            if(tmp->next->val==e)
            {
                q=tmp->next;
                tmp->next=q->next;
                free(q);//而不是free(tmp->next)
                break;
            }
            tmp=tmp->next;
        }
    
        LinkList p=*L;
        p=p->next;
        cout<<"After deleted A is ";
        while(p)
        {
            cout<<p->val<<" ";
            p=p->next;
        }
        cout<<endl;
    }
    
    
    /*
    * 求交集,链表A和B,修改了链表A和B
    *
    *
    */
    void inter_sec(LinkList *A,LinkList *B)
    {
        LinkList a_tmp=*A;
        LinkList b_tmp=*B;
    
        a_tmp=a_tmp->next;
        //b_tmp=b_tmp->next;
        vector<int> arr;//存储交集
        while(a_tmp)
        {
            while(b_tmp->next)
            {
                if(b_tmp->next->val==a_tmp->val)
                {
                    arr.push_back(a_tmp->val);
                    LinkList p=b_tmp->next;
                    b_tmp->next=p->next;
                    free(p);
                    break;
                }
                b_tmp=b_tmp->next;
            }
            a_tmp=a_tmp->next;
        }
    
        sort(arr.begin(),arr.end());
        cout<<"A cross B is ";
        for(int i=0;i<=arr.size()-1;i++)
            cout<<arr[i]<<" ";
        cout<<endl;
    }
    
    /*
    * 求并集,
    * 修改A和B, By reference
    *
    */
    void uni(LinkList *A,LinkList *B)
    {
        LinkList a_tmp=*A;
        LinkList b_tmp=*B;
        a_tmp=a_tmp->next;
        b_tmp=b_tmp->next;
    
        while(a_tmp->next)//巨他妈坑
            a_tmp=a_tmp->next;
    
        a_tmp->next=b_tmp;
    
        LinkList a_tmp2=*A;
        cout<<"A union B is ";
        a_tmp2=a_tmp2->next;
        while(a_tmp2)
        {
            cout<<a_tmp2->val<<" ";
            a_tmp2=a_tmp2->next;
        }
        cout<<endl;
    }
    
    void show_afterSort(LinkList A)
    {
        vector<int> arr;
        LinkList p=A->next;
    
        while(p)
        {
            arr.push_back(p->val);
            p=p->next;
        }
    
        sort(arr.begin(),arr.end());
        cout<<"A union B in sequence is ";
        for(int i=0;i<=arr.size()-1;i++)
            cout<<arr[i]<<" ";
    }
    

    2 链表合并另一种思路参考文章,请点击

    展开全文
  • [C++] 349 -- 两个数组的交集

    千次阅读 2019-07-31 21:18:13
    目录例题描述解题思路代码实现 例题描述 给定两个数组,编写一个函数来计算它们的交集。 示例1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出...


    例题描述

    给定两个数组,编写一个函数来计算它们的交集。

    示例1:

    • 输入:
      nums1 = [1,2,2,1], nums2 = [2,2]
    • 输出: [2]

    示例 2:

    • 输入:
      nums1 = [4,9,5], nums2 = [9,4,9,8,4]
    • 输出: [9,4]

    解题思路

    交集即两集合共有的元素的集合。

    所以首先要保证集合的唯一性,所以选择std::map容器导入元素,进行去重

    然后随意遍历其中一个集合中的元素,每个元素与另一个集合中查找这个元素:

    1. 如果存在,即为交集元素,插入需要返回的vector中。
    2. 如果不存在,即找到了mapend()位置,表示存在在A集合中的B集合中不包含的元素,那这个元素不会处理,即不放入返回的集合。

    代码实现

    class Solution {
    public:
        vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
            vector<int> ret;
            
            set<int> s1;
            for(auto e:nums1){
               s1.insert(e);
            }
            
            set<int> s2;
            for(auto e:nums2){
               s2.insert(e);
            }
            
            for(auto e:s1){
                if(s2.find(e) != s2.end())	//s1和s2都共有此元素
                    ret.push_back(e);
            }
            return ret;
        }
    };
    

    链接:https://leetcode-cn.com/problems/intersection-of-two-arrays/

    展开全文
  • 求矩形交集简易版

    2019-06-11 15:21:10
    例题:在二维平面上,给定两个矩形,满足矩形的每条边分别和坐标轴平行,求这个两个矩形的并的面积。即它们重叠在一起的总的面积。 解题思路: 在求两个矩形并的面积之前,我们首先需要知道其是否相交,可以按照...

    例题:在二维平面上,给定两个矩形,满足矩形的每条边分别和坐标轴平行,求这个两个矩形的并的面积。即它们重叠在一起的总的面积。

    解题思路:

    在求两个矩形并的面积之前,我们首先需要知道其是否相交,可以按照如下方式求解:并的面积 = 总面积 - 相交面积。于是问题转变成了如何求两个矩形相交的面积。

    以(x1 , y1) 和 (x2 , y2)为左下顶点和右上顶点的矩形A,和以(x1’ , y1’) 和 (x2’ , y2’)为左下顶点和右上顶点的矩形B,它们有交集的条件是:max{ x1 , x1’ } < min{ x2 , x2’ }并且max{ y1 , y1’ } < min{ y2 , y2’ }。而如果相交,它们的面积也是
    area = ( min{ x2 , x2’ } - max{ x1 , x1’ } ) * ( min{ y2 , y2’ } - max{ y1 , y1’ } )。

    代码示例: 51nod2488

    #include<cstdio>
    #include<iostream>
    using namespace std;
    const int N = 10;
    int xx1[N],xx2[N],yy1[N],yy2[N];
    typedef long long ll;
    ll jiao(int a,int b){
        ll tx1 = max(xx1[a],xx1[b]),tx2 = min(xx2[a],xx2[b]);
        ll ty1 = max(yy1[a],yy1[b]),ty2 = min(yy2[a],yy2[b]);
        if( tx1 >= tx2 || ty1 >= ty2) return 0;
        return (tx2-tx1)*(ty2-ty1);
    }
    ll area(int x){
        return (xx2[x]-xx1[x])*(yy2[x]-yy1[x]);
    }
    int main(){
        scanf("%d%d%d%d",xx1+1,yy1+1,xx2+1,yy2+1);
        scanf("%d%d%d%d",xx1+2,yy1+2,xx2+2,yy2+2);
        ll ans = area(1)+area(2);
        ans -= jiao(1,2);
        printf("%lld\n",ans);
        return 0;
    }
    
    展开全文
  • 区间合并

    2021-01-11 11:54:01
    例题 #include <iostream> #include <vector> #include <algorithm> using namespace std; typedef pair<int,int> PII; vector<PII> segs; int n; //合并 void merge(vector&...
  • 目录例题描述解题思路代码实现 例题描述 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] ...
  • 例题:1、set函数求交集(&)、差集(-)、并集(|)s1 = set('here')s2 = set('hello')print(s1-s2)#差集print(s1&s2)#交集print(s1|s2)#并集结果:2、删除元素的重复项(1)使用set函数S = {"...
  • 2.set_union求并集 set_intersation求交集用法 set_union(x1.begin(),x1.end(),x2.begin(),x2.end(),inserter(x,x.begin())); 前4个参数是两个集合的起点终点.然后最后一个的插入迭代器第一个填同类型的的东西...
  • Poj-3669 Meteor Shower–Bfs经典例题 题意大致是一群流星来袭,告诉你流星将要击中的坐标及到达时间(流星的作用范围是上下左右外加中间的点),要求你能否逃到安全区(是指没有被击中的地方)。 思路是建一个第...
  • 2.解题思路:本题利用加法...这3种情况都没有交集,因此可以使用加法原理。设三种情况对应的方案数分别为A(n,m),B(n,m),D(n,m)。下面讨论如何计算这三个值。 A(n,m)的计算可以利用乘法原理:首先选择一格,一共有nm
  • 集合的运算的基本运算,要求同学们对集合的交、并、补运算完成初步的概念理解,及对入门题型的初步了解。就像延续了数值的学习过程,学会了比较大小,就...小编乱入知识会知识点1 交集【重点】1. 交集1-1 定义一般...
  • (位图、布隆过滤器)实现方式、 一个日志文件中保存了一些IP地址,如何找到出现次数最多的IP地址 当IP地址的数量非常大,map在内存中存不下...给定两个文件AB分别有100亿个整数,只有1G内存,问如何找到两个文件的交集
  • 4、INTERSECT:出栈两个元素,然后把二者的交集入栈 5、ADD:出栈两个集合,把先出栈的集合加入到后出栈的集合中,结果入栈 心路历程: 这道题当真卡了我好久好久,因为涉及到了4个容器的搭配使用,最开始总是搞不懂...
  • 算典05_例题_05_UVA-12096

    2017-04-02 16:48:59
    The SetStack Computer题意有一个专门为了集合运算而设计的“集合栈”计算机。... INTERSECT:出栈两个集合,然后把二者的交集入栈 ADD:出栈两个集合,然后把先出栈的集合加入到后出栈的集合中,
  • 区间合并的应用场景:给出很多个区间,把有交集的区间合并为一个【特殊规定:端点处相交,也算有交集】。 这类题目往往让我们输出最终的区间数目或者区间长度的最值,又或者是将所有区间合并的最小花费。要求我们...
  • 该机器有一个初始为空的栈,并且支持以下操作:PUSH:空集“{}”入栈DUP:把当前栈顶元素复制一份后再入栈UNION:出栈两个集合,然后把两者的并集入栈INTERSECT:出栈两个集合,然后把二者的交集入栈ADD...
  • 废话不多说,4邻接,8邻接定义自己找,下面给出m邻接...2. q在p的对角领域中,并且q的4邻域与p的4领域相交为空集(交集无点属于V)。 看一个例子 两个红圈,p, q , v=1:  * 不是4邻接  * 是8邻...
  • 前言:我也不太清楚刘老师为什么说这题是离散化,我想可能是用到集合的东西吧,区间完全包含于建筑的区间或者交集为空,这都是离散的知识。 代码如下: #include<set> #include<cstdio> #include<...
  • 一、集合 集合(Set,或简称集)是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。其中,构成集合的这些对象则称为该集合的元素。...交集定义:由属于A且属于B的相同元素组成的集合,记作A∩B(或B∩A)...
  • 首先老样子,我们来回顾一下这道题的题目:主题:集合的交集现在有两个元素都是整数的list,每一个list都是一个集合(就是说,在集合内没有重复的值,比如没有两个2或者两个3什么的)。这两个list的交集就是一个在两个...
  • 先略提下位图:位图是建立在哈希表的基础上进行的优化,哈希表可能用1个字节或者4个字节来表示key,如果数据太多,哈希表就会占用大量空间。...例题:位图应用 给定100亿个整数,设计算法找到只出现一次的整...
  • 准确地说:把一个图的顶点划分为两个不相交集 和 ,使得每一条边都分别连接 、 中的顶点。如果存在这样的划分,则此图为一个二分图。二分图的一个等价定义是:不含有「含奇数条边的环」的图。图 1 是一个二分图...
  • 在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个用于此数据结构的操作: Find:确定元素属于哪一个...
  • 最近在复习考研数学中的概率论与数理统计,其中有很多定义,今天结合题目打算来讲一下条件概率和联合概率的定义和用法。...那很明显,就是两个随机变量发生概率的交集,一般我们可以用P(MN)或者P(M∩N)来表...
  • Hello,大家好,这里是摆渡学涯。今天这次课程我们来为大家讲...例题1:求f(x)=x-1>0的解集错误方法:x-1>0,解得:x>1注意:题目中要求的是求出不等式的解集,而不是初中时代不等式的解,因此上面的表示...
  • 都有能利用的性质只有是凸集以及与两个集合的关系(从微观上,一定存在中元素乘上实数在中),应该在二者间建立联系(2)分析:与上一题思路相同(3)有限个凸集的交集为凸集。由以上凸集性质,我...

空空如也

空空如也

1 2 3 4
收藏数 65
精华内容 26
关键字:

交集例题