精华内容
下载资源
问答
  • //求最大最小值 vector<double>::iterator biggest = std::max_element(v.begin(), v.end()); cout *biggest(v.begin(), biggest) ; vector<double>::iterator smallest= std::min_element(v.begin(), v.end());...

    元素删除可参考 http://c.biancheng.net/view/429.html

    去重可参考https://blog.csdn.net/HE19930303/article/details/50579996

    对vector中的pair排序 https://www.cnblogs.com/bigyang/p/8590552.html

    批量赋值:https://blog.csdn.net/t46414704152abc/article/details/79229715

    以下代码参考https://www.cnblogs.com/mayouyou/p/8921598.html

    #include <iostream>
    #include <vector>
    #include <algorithm> //sort函数、交并补函数
    #include <iterator> //求交并补使用到的迭代器
    using namespace std;
    
    //打印容器vector
    void print_vector(vector<int> v)
    {
        if(v.size()>0){
            cout<<"{";  
            for(int i=0;i<int(v.size());i++){  
                cout<<v[i]<<",";  
            }  
            cout<<"\b}";  
        }
        else{
            cout<<"{}";
        }
    }
    
    //容器vector中元素的去重
    vector<int> unique_element_in_vector(vector<int> v)
    {
        vector<int>::iterator vector_iterator;
        sort(v.begin(),v.end());
        vector_iterator = unique(v.begin(),v.end());
        if(vector_iterator != v.end()){
            v.erase(vector_iterator,v.end());
        }
        return v;
    }
    
    //两个vector求交集
    vector<int> vectors_intersection(vector<int> v1,vector<int> v2)
    {
        vector<int> v;
        sort(v1.begin(),v1.end());   
        sort(v2.begin(),v2.end());   
        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 
        return v;
    }
    
    //两个vector求并集
    vector<int> vectors_set_union(vector<int> v1,vector<int> v2)
    {
        vector<int> v;
        sort(v1.begin(),v1.end());   
        sort(v2.begin(),v2.end());   
        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 
        return v;
    }
    
    //判断vector的某一元素是否存在
    bool is_element_in_vector(vector<int> v,int element)
    {
        vector<int>::iterator it;
        it=find(v.begin(),v.end(),element);
        if (it!=v.end()){
            return true;
        }
        else{
            return false;
        }
    }
    
    int main(){
        vector<int> v1,v2,v;
        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);
        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;
        cout<<"对v1去重:";
        v1=unique_element_in_vector(v1);
        print_vector(v1);
        cout<<endl;
        cout<<"求v1与v2的交集:";
        v=vectors_intersection(v1,v2);
        print_vector(v);
        cout<<endl;
        cout<<"求v1与v2的并集:";
        v=vectors_set_union(v1,v2);
        print_vector(v);
        
        //求最大最小值
        vector<double>::iterator biggest = std::max_element(v.begin(), v.end());
        cout << "Max element is " << *biggest<< " at position " << distance(v.begin(), biggest) << endl;
        vector<double>::iterator smallest= std::min_element(v.begin(), v.end());
        cout << "Min element is " << *smallest<< " at position " << distance(v.begin(), smallest) << endl;
    
    
        return 0;
    }
    
       

    Enjoy!

    展开全文
  • 输出A/B内容的:长度/最大值/最小值/交集/并集/差集的集合形式(受限与输出不能输出特定范围指定位数,将在下一篇文章介绍) 注意:随机数的取值范围不是[)而是[] ''' import random def myFunc(): List = [] for ...
    '''
    随机生成10个整数:范围[0-10]
    分别组成A集合和B集合
    输出A/B内容的:长度/最大值/最小值/交集/并集/差集的集合形式(受限与输出不能输出特定范围指定位数,将在下一篇文章介绍)
    注意:随机数的取值范围不是[)而是[]
    
    '''
    import random
    def myFunc():
        List = []
        for j in range(5):
            x=random.randint(0,10)
            List.append(x)
        return set(List)
    A = myFunc()
    B = myFunc()
    print(str.format("集合的内容,长度,最大值,最小值分别为:\n{0} {1} {2} {3}",A,len(A),max(A),min(A)))
    print(str.format("{0} {1} {2} {3}",B,len(B),max(B),min(B)))
    print(str.format("A和B的并集,交集和差集分别为:\n{0} {1} {2} ",A|B,A&B,A-B))
    
    

    更多干货正在赶来,敬请期待……

    PS:本文原创首发于公众号「让我遇见相似的灵魂」,回复关键字获取数十本程序员经典电子书。

    左手代码,右手吉他,这就是天下:如果有一天我遇见相似的灵魂 那它肯定是步履艰难 不被理解 喜黑怕光的。如果可以的话 让我触摸一下吧
    它也一样孤独得太久。 不一样的文艺青年,不一样的程序猿。

    展开全文
  • //结构体数组建树,求区间最小值,单点更新最小值 #include #define MAX 65535 #define INFINITY 65535 #define min(a,b) a struct Node { int val; }segtree[MAX]; void buildtree(int root, int arr[],int i...
    //结构体数组建树,求区间最小值,单点更新最小值
    #include<stdio.h>
    #define MAX 65535
    #define INFINITY 65535
    #define min(a,b) a<b?a:b
    struct Node
    {
      int val;
    }segtree[MAX];
    void buildtree(int root, int arr[],int istart,int iend )
    {
    	if(istart==iend)//叶子节点
    	segtree[root].val=arr[istart];
    	else
    	{
    		buildtree(root*2+1,arr,istart,(istart+iend)/2);//递归构造左子树
    		buildtree(root*2+2,arr,(istart+iend)/2+1,iend);//递归构造右子树
    		segtree[root].val=min(segtree[root*2+1].val,segtree[root*2+2].val);//更新根节点的值
    	}
    }
    int query(int root,int arr[],int start,int end,int qstart ,int qend) //区间查询 
    {
    	if(qstart>end||qend<start)   return INFINITY;//当前节点区间与查询区间没有交集
    	if(qstart<=start&&qend>=end)  return segtree[root].val;//查询区间包含当前节点区间
    	else
    	{
    	return min(query(root*2+1,arr,start,(start+end)/2,qstart,qend),query(root*2+2,arr,(start+end)/2+1,end,qstart,qend));
    	}//返回左右子树查询的最小值
    }
    void update(int root ,int start,int end,int index,int addval)//单点更新
    {
    	if(start==end)
    	 {
    	 	if(start==index) //找到更新的节点
    	 	segtree[root].val+=addval;
    	 	return ;
    	 }
    	 int mid=(start+end)/2;
    	 if(index<=mid)//在左子树中更新 
    	 update(root*2+1,start,mid,index,addval);
    	 else 
    	 update(root*2+2,mid+1,end,index,addval);
    	 segtree[root].val=min(segtree[root*2+1].val,segtree[root*2+2].val);
         // 根据左右子树的值回溯更新当前节点的值 
    } 
    int main() 
    {
    	int a[]={3,4,5,7,2,1,0,3,4,5};
    	buildtree(1,a,0,9);
    	int t=query(1,a,0,9,0,6);
    	printf("%d\n",t);
    	update(1,0,9,6,1);
    	int tt=query(1,a,0,9,0,6);
    	//printf("%d",sizeof(a)/sizeof(a[0])-1);
    	return 0;
    }
    
     
    
    
    //简单数组建树查询操作,求区间最小值下标
    #include<iostream>  
    #include<string.h>
    using namespace std;  
    #define MAXN 100  
    #define MAXIND 256 //线段树节点个数  
    //构建线段树,目的:得到M数组.  
    void build(int node, int b, int e, int M[], int A[])  
    {  
        if (b == e)  
        M[node] = b; //只有一个元素,只有一个下标  
        else  
        {   
            build(2 * node, b, (b + e) / 2, M, A);  
            build(2 * node + 1, (b + e) / 2 + 1, e, M, A);  
    
    	    if (A[M[2 * node]] <= A[M[2 * node + 1]])  
    	        M[node] = M[2 * node];  
    	    else  
    	        M[node] = M[2 * node + 1];  
        }  
    }  
    //找出区间 [i, j] 上的最小值的索引  
    int query(int node, int b, int e, int M[], int A[], int i, int j)  
    {  
        int p1, p2;  
      
        //查询区间和要求的区间没有交集  
        if (i > e || j < b)  
            return -1;  
    
        if (b >= i && e <= j)  
            return M[node];  
     
        p1 = query(2 * node, b, (b + e) / 2, M, A, i, j);  
        p2 = query(2 * node + 1, (b + e) / 2 + 1, e, M, A, i, j);  
      
        //return the position where the overall  
        //minimum is  
        if (p1 == -1)  
            return M[node] = p2;  
        if (p2 == -1)  
            return M[node] = p1;  
        if (A[p1] <= A[p2])  
            return M[node] = p1;  
        return M[node] = p2;  
      
    }  
      
    int main()  
    {  
        int M[MAXIND]; //下标1起才有意义,否则不是二叉树,保存下标编号节点对应区间最小值的下标.  
        memset(M,-1,sizeof(M));  
        int a[]={3,4,5,7,2,1,0,3,4,5};  
        build(1, 0, sizeof(a)/sizeof(a[0])-1, M, a); 
    	cout<<query(1, 0, sizeof(a)/sizeof(a[0])-1, M, a, 0, 9)<<endl;
        return 0;  
    }  
    
    
    
    
    //求区间最小值(区间更新+延迟标记)
    
    #include<stdio.h>
    #define MAX 65535
    #define INFINITY 65535
    #define min(a,b) a<b?a:b
    struct node
    {
    	int val;
    	int addmark; //延迟标记 
    }segtree[MAX];
    void buildtree(int root,int start ,int end,int a[]) //建树 
    {
    	segtree[root].addmark=0;
    	if(start==end)
    	segtree[root].val=a[start];
    	else
    	{
    	buildtree(root*2+1,start,(start+end)/2,a);//创建左子树 
    	buildtree(root*2+2,(start+end)/2+1,end,a);//创建右子树 
    	segtree[root].val=min(segtree[root*2+1].val,segtree[root*2+2].val);
    	//更新节点的值 
    	}
    }
    //root : 当前线段树根节点下标 
    void pushdown(int root)//向下传递
    {
    	if(segtree[root].addmark!=0) 
    	{
    		segtree[root*2+1].addmark+=segtree[root].addmark;// 多次延迟标记且没有向下传递 
    		segtree[root*2+2].addmark+=segtree[root].addmark;
    		
    		segtree[root*2+1].val+=segtree[root].addmark;//区间最小值也需要加上这个addmark 
    		segtree[root*2+2].val+=segtree[root].addmark;
    		
    		segtree[root].addmark=0;//传递完成,标记清空 
    	}
    }
    //[qstart,qend] 需要查询的区间 
    int query(int root,int start,int end,int qstart,int qend)
    {
    	if(qstart>end||qend<start)//没有交集 
    	return INFINITY;
    	if(qstart<=start&&qend>=end)//包含当前区间 
    	return segtree[root].val;
    	pushdown(root);//延迟标记向下传递 
    	int mid=(start+end)/2;
    	return min(query(root*2+1,start,mid,qstart,qend),query(root*2+2,mid+1,end,qstart,qend));
        //查询左右子树并返回最小值 
    } 
    
    //[cstart,cend] 需要update的区间 
    void update(int root,int start,int end,int cstart,int cend,int addval)
    {
    	if(cstart>end||cend<start)//区间没有交集 
    	return ;
    	if(start>=cstart&&end<=cend)//包含当前区间 
    	{
    		segtree[root].addmark+=addval; 
    		segtree[root].val+=addval;//更新得值 
    		return ;
    	}
    	pushdown(root);//延迟标记向下传递 
    	int mid=(start+end)/2;
    	update(root*2+1,start,mid,cstart,cend,addval);//更新左子树 
    	update(root*2+2,mid+1,end,cstart,cend,addval);//更新有子树 
    	segtree[root].val=min(segtree[root*2+1].val,segtree[root*2+2].val);
        //返回更新后节点最小值 
    }
    int main()
    {
    	int a[]={3,4,5,7,2,1,0,3,4,5};
    	buildtree(1,0,9,a);
    	int t=query(1,0,9,0,6);//查询【0,6】 
    	printf("%d\n",t);
    	update(1,0,9,4,6,2);//更新【4,6】 
    	int tt=query(1,0,9,0,6);//查询【0,6】 
    	printf("%d\n",tt);
    	return 0;
    }


    
    
    展开全文
  • int最大最小值

    千次阅读 2013-12-24 18:57:31
    例如你想要的int的最大值可以使用宏INT_MAX,最小值使用INT_MIN,而无符号则可以使用UINT_MAX,还有其它类型 的。你自己把这个头文件打开看看就知道了。   附:关于“整形变量为32位”的问题的剖析: ...
    int 长度
    2010-04-26 17:20:04
    标签: int  长度  休闲  职场

     

    Ø        基本数据类型
    C语言中只有4中基本数据类型——整型、浮点型、指针和聚合类型(如数组和结构等);所有其他类型都是从这4种基本类型的某种变化或组合派生而来。
    一、整型家族
    整型家族包括char、short int、int和long int,并且都分为signed和unsigned型。
    int型字长问题:
    long int型至少应该和int型一样长,而int型至少应该和short int一样长。
         规定int字长和机器字长相同; C/C++
    ② 操作系统字长和机器字长未必一致;
    ③ 编译器根据操作系统字长来定义int字长;
    由上面三点可知,在一些没有操作系统的嵌入式计算机系统上,int的长度与处理器字长一致;有操作系统时,操作系统的字长与处理器的字长不一定一致,此时编译器根据操作系统的字长来定义int字长:“比如你在64位机器上运行DOS16系统,那么所有for dos16的C/C++编译器中int都是16位的;在64位机器上运行win32系统,那么所有for win32的C/C++编译器中int都是32位的”。(CPU的“字长”是指其一条指令/一次运算可以处理的数据的最大宽度。http://www.cublog.cn/u/23458/showart.php?id=175995)
    另外,对于整型的数值范围,每个编译器里面都有一个标准头文件:limits.h,这个头文件定义了一些宏,这些宏表示该编译器使用的所有数据类型的范围,编程过程中 使用这些宏就行了。例如你想要的int的最大值可以使用宏INT_MAX,最小值使用INT_MIN,而无符号则可以使用UINT_MAX,还有其它类型 的。你自己把这个头文件打开看看就知道了。
     
    附:关于“整形变量为32位”的问题的剖析:
    http://bbs.cpcw.com/viewthread.php?tid=666146
    整形变量是不是32位这个问题不仅与具体的CPU架构有关,而且 与编译器有关。在嵌入式系统的编程中,一般整数的位数等于CPU字长,常用的嵌入式CPU芯片的字长为8、16、32,因而整形变量的长度可能是8、 16、32。在未来64位平台下,整形变量的长度可达到64位。
    长整形变量的长度一般为CPU字长的2倍。
    在数据结构的设计中,优秀的程序员并不会这样定义数据结构(假设为WIN32平台):
    typedef struct tagTypeExample
    {
    unsigned short x;
    unsigned int y; 
    }TypeExample;
    他们这样定义:
    #define unsigned short UINT16 //16位无符号整数
    #define unsigned int UINT32 //32位无符号整数
    typedef struct tagTypeExample
    {
    UINT16 x;
    UINT32 y; 
    }TypeExample;
    这样定义的数据结构非常具有通用性,如果上述32平台上的数据发送到16位平台上接收,在16位平台上仅仅需要修改UINT16、UINT32的定义:
    #define unsigned int UINT16 //16位无符号整数
    #define unsigned long UINT32 //32位无符号整数
    几乎所有的优秀软件设计文档都是这样定义数据结构的。
     
    char型与程序可移植性:
    char类型变量在本质上是小整型值。
    字符型(char型)也分signed char和unsigned char型,如果在定义变量时只使用关键字char,缺省情况下它根据编译器的定义为signed char或unsigned char,这意味着不同机器上的char可能有不同的取值范围。因此,只有当程序使用的char型变量的值位于signed char和unsigned char的交集中(例如编译器认为char为8位二进制长时,这个交集是0~127,ASCⅡ字符集的字符都在这个范围内),这个程序才是可移植的。
    进一步,如果显示地将字符变量声明为signed或unsigned,则可提高程序的可移植性,不过,有些机器处理signed char和unsigned char的能力是不同的,硬性规定后可能会使效率受损,还有不少处理字符的库函数的参数声明为char,因此显示声明也可能会有兼容性问题。
    结论:保证可移植性的最佳办法还是定义为char型同时只使用signed char和unsigned char型的交集字符,在进行算术运算时,可根据需要再使用显示地声明或者强制转换。
    展开全文
  • 一、交集java中交集使用 A.retainAll(B) ,交集的结果在集合A中。1 import org.junit.Test;23 import java.util.HashSet;4 import java.util.Set;56 /**7 * 交集8 *9 * @author zhongtao on 2018/5/3010 */11 public ...
  • //问最小值 //Q a b 询问[a,b]中最小值 //C a b 将a点值改为b #include<bits/stdc++.h> using namespace std; #pragma warning(disable:4996) #define maxn 100005 #define ll long long ll chushi[maxn], sum...
  • 虽然线段树和树状数组也可以求解区间最大值和最小值,但是他们确没有st表的速度快,st表预处理之后查询区间最大最小值只要O(1)的时间,st表的精要就是dp数组的特点,dp[i][j]表示的是从i开始,长度为2^j长度的区间...
  • 寻找旋转排序数组中的最小值 153. 寻找旋转排序数组中的最小值 难度中等 假设按照升序排序的数组在预先未知的某个点上进行了旋转。例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] 。 请找出其中最小的元素。...
  • 3 区间交集

    2021-05-06 23:05:46
    986. 区间列表的交集 给定两个由一些 闭区间 组成的列表,firstList 和 secondList ,其中 firstList[i] = [starti, endi] 而 secondList[j] = [startj, endj] 。每个区间列表都是成对 不相交 的,并且 已经排序 。 ...
  • Numpy的数组各行,各列的求和,平均值,最大值,最小值,最大最小值差,标准差,方差等的计算 函数numnumpy.sum()可以算出ndarray数组中所有元素的和,函数numpy.mean()可以算出ndarray数组中所有元素的平均值。 ...
  • 想要获得count=3的分组中 score的最小值 并根据score最小值所在的行去修改另外一列 df2 = df.groupby(by=['outid','course_no'],as_index=False).count() a=df2[df2['id']>2] c= DataFr...
  • 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9] 这个
  • 合并有交集的集合

    千次阅读 2019-02-15 16:08:48
    要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应 输出 {{a,b,c,d,h},{e,f}, {g}} 工作一年第一次遇到到的相对比较难的算法题, 看了网上的思路, 然后自己实现了下 思路 初始化一个值...
  • 总结&收获 又手写了一遍线段树,熟悉了很多 唉,不要怕。...3.1 竟然忘了线段树能维护最小值emm 3.2 [1,2]和[3,4]不能在[1,4]通行!所以不能维护原来的区间,区间应该做一些处理:r--(画一下
  • 力扣之两个数组的交集1 题目描述 : 给定两个数组,编写一个函数来计算它们的交集 样例输入 示例 : 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2]; 输入:nums1 = [4,9,5], nums2 ...
  • 数组取交集

    2020-07-13 11:08:48
    349. 两个数组的交集 题目 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 说明:...
  • C/C++描述 LeetCode 350. 两个数组的交集 II

    千次阅读 多人点赞 2020-07-13 19:04:54
    两个数组的交集 II   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客 本文原创为亓官劼,请...
  • LC 两个数组的交集 II

    2021-08-27 16:47:30
    输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 我们可以不考虑输出结果的顺序。 【代码1.0】 class Solution { public int[] intersect(int[] nums1, int[] nums2) { int cnt= 0; /...
  • 两个数组的交集

    2021-10-18 11:05:01
    两个数组的交集一、题目二、思想和代码1,先对数组进行排序2,...(1)输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 (2)我们可以不考虑输出结果的顺序。 二、思想和代码 1,先对数组进
  • 问题描述给定一个n个元素的序列{A1,A2,……,An},在要求的区间Query(L,R)内找到最小值:min{AL,AL+1,……,AR}。hiho16算法描述在这里介绍最常用的Tarjan的Sparse-Table算法,它的预处理时间复杂度为O(nlogn),...
  • 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9] 说明: 输出结果中每个元素出现...
  • 1. 相离,可以通过判断两个矩形的X最大值,最小值以及Y最大值,最小值的大小比较判定。(空间搜索外包矩形常用算法) 2. 包含与被包含,也是通过两个矩形的X最大值,最小值以及Y最大值,最小值的大小比较判定。...
  • LC 两个数组的交集

    2020-11-26 15:04:29
    输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 可以不考虑输出结果的顺序。 1 字典记录次数,取次数小的构建新列表。 class Solution: def intersect(self, nums1: List[int], nums2:...
  • 349. 两个数组的交集 题目链接:https://leetcode-cn.com/problems/intersection-of-two-arrays/ 难度:简单 题目描述 给定两个数组,编写一个函数来计算它们的交集。 测试用例 示例 1: 输入:nums1 = ...
  • 两个数组的交集(力扣:349) 给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。
  • 两个数组的交集 II

    2021-09-20 13:22:14
    输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 我们可以不考虑输出结果的顺序。 先对两个数组进行排序,然后使用两个指针分别指向两个数组的开始位置。 首先判断两个指针指向的值是否...
  • 两个数组的交集II

    2020-07-13 20:12:47
    两个数组的交集II ...输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 我们可以不考虑输出结果的顺序。 题解 /** * @param {number[]} nums1 * @param {number[]} nums2 * @r

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,880
精华内容 8,352
关键字:

交集的最小值