严蔚敏数据结构题集 p18(2.25——2.30)(c语言代码实现)

目录

 2.25假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。试对顺序表编写求C的算法。

2.26要求同2.25题。是对单链表编写求C的算法

2.27 对2.25题的条件作以下两点修改,对顺序表重新编写求得表C的算法(1)假设在同一表(A或B)中可能存在值相同的元素,但要求新生成的表C中的元素值各不相同;(2)利用A表空间存放表C。 

2.28 对2.25题的条件作以下两点修改,对单链表重新编写求得表C的算法(1)假设在同一表(A或B)中可能存在值相同的元素,但要求新生成的表C中的元素值各不相同;(2)利用A表空间存放表C。

2.29 已知A,B和C为三个递增有序的线性表,现要求对A表作如下操作:删去那些既在B表中出现又在C表中出现的元素。试对顺序表编写实现上述操作的算法,并分析你的算法的时间复杂度(注意:题中没有特别指明同一表中的元素值各不相同)。

2.30 要求同2.29题.试对单链表编写算法,请释放A表中的无用结点空间。


 2.25假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。试对顺序表编写求C的算法。

本题代码如下

sqlist jiaoji(sqlist* a, sqlist* b)
{sqlist c; // 定义一个结构体变量,用于存储交集结果c.length = 0; // 初始化交集长度为0int i = 0; // 定义一个整型变量,用于遍历顺序表aint j = 0; // 定义一个整型变量,用于遍历顺序表bint k = 0; // 定义一个整型变量,用于记录交集元素在结果中的位置while (i < a->length && j < b->length) // 当两个顺序表都没有遍历完时,进行循环{if (a->s[i] == b->s[j]) // 如果顺序表a和b当前位置的元素相等{c.s[k++] = a->s[i++]; // 将该元素添加到交集结果中,并将交集长度加1j++; // 顺序表b的指针向后移动一位}else if (a->s[i] < b->s[j]) // 如果顺序表a当前位置的元素小于顺序表b当前位置的元素{i++; // 顺序表a的指针向后移动一位}else // 如果顺序表a当前位置的元素大于顺序表b当前位置的元素{j++; // 顺序表b的指针向后移动一位}}c.length = k; // 更新交集长度return c; // 返回交集结果
}

完整测试代码如下

#include<stdio.h>
#define Max 10
typedef struct sqlist
{int s[Max]; // 定义一个结构体数组,用于存储顺序表的元素int length; // 定义一个整型变量,用于存储顺序表的长度
}sqlist;
// 定义一个函数,用于求两个顺序表的交集
sqlist jiaoji(sqlist* a, sqlist* b)
{sqlist c; // 定义一个结构体变量,用于存储交集结果c.length = 0; // 初始化交集长度为0int i = 0; // 定义一个整型变量,用于遍历顺序表aint j = 0; // 定义一个整型变量,用于遍历顺序表bint k = 0; // 定义一个整型变量,用于记录交集元素在结果中的位置while (i < a->length && j < b->length) // 当两个顺序表都没有遍历完时,进行循环{if (a->s[i] == b->s[j]) // 如果顺序表a和b当前位置的元素相等{c.s[k++] = a->s[i++]; // 将该元素添加到交集结果中,并将交集长度加1j++; // 顺序表b的指针向后移动一位}else if (a->s[i] < b->s[j]) // 如果顺序表a当前位置的元素小于顺序表b当前位置的元素{i++; // 顺序表a的指针向后移动一位}else // 如果顺序表a当前位置的元素大于顺序表b当前位置的元素{j++; // 顺序表b的指针向后移动一位}}c.length = k; // 更新交集长度return c; // 返回交集结果
}
int main()
{sqlist a, b; // 定义两个顺序表变量a和bint i = 0; // 定义一个整型变量,用于遍历顺序表a和ba.length = 5; // 设置顺序表a的长度为5b.length = 5; // 设置顺序表b的长度为5printf("请输入A顺序表的元素:"); // 提示用户输入顺序表a的元素for (i = 0; i < a.length; i++) // 遍历顺序表ascanf("%d", &a.s[i]); // 读取用户输入的元素并存储到顺序表a中printf("请输入B顺序表的元素:"); // 提示用户输入顺序表b的元素for (i = 0; i < b.length; i++) // 遍历顺序表bscanf("%d", &b.s[i]); // 读取用户输入的元素并存储到顺序表b中sqlist c = jiaoji(&a, &b); // 调用函数求两个顺序表的交集,并将结果存储到变量c中printf("C顺序表中的元素:"); // 提示用户输出交集结果for (i = 0; i < c.length; i++) // 遍历交集结果printf("%d ", c.s[i]); // 输出交集结果中的每个元素return 0; // 程序正常结束,返回0
}

测试结果如下

2.26要求同2.25题。是对单链表编写求C的算法

本题代码如下

linklist jiaoji(linklist* A, linklist* B)
{lnode* C = (lnode*)malloc(sizeof(lnode));C->next = NULL;lnode* ra = (*A)->next, * rb = (*B)->next;lnode* rc = C, * r;while (ra && rb){if (ra->data == rb->data){r = ra;ra = ra->next;rb = rb->next;rc->next = r;r->next = NULL;rc = r;}else if (ra->data < rb->data){ra = ra->next;}else{rb = rb->next;}}return C;
}

完整测试代码如下

#include<stdio.h>
#include<stdlib.h>
typedef struct lnode
{int data;struct lnode* next;
}lnode, * linklist;
int a[5] = { 1,2,3,4,5 };
int b[5] = { 3,4,5,6,7 };
int n = 5;
void buildlinklist(linklist* L, int str[])
{*L = (lnode*)malloc(sizeof(lnode));(*L)->next = NULL;int i = 0;lnode* s, * r = *L;for (i = 0; i < n; i++){s = (lnode*)malloc(sizeof(lnode));s->data = str[i];s->next = r->next;r->next = s;r = s;}r->next = NULL;
}
linklist jiaoji(linklist* A, linklist* B)
{lnode* C = (lnode*)malloc(sizeof(lnode));C->next = NULL;lnode* ra = (*A)->next, * rb = (*B)->next;lnode* rc = C, * r;while (ra && rb){if (ra->data == rb->data){r = ra;ra = ra->next;rb = rb->next;rc->next = r;r->next = NULL;rc = r;}else if (ra->data < rb->data){ra = ra->next;}else{rb = rb->next;}}return C;
}
void print(linklist* L)
{lnode* k = (*L)->next;while (k){printf("%d ", k->data);k = k->next;}
}
int main()
{linklist A, B;buildlinklist(&A, a);printf("A单链表元素为:");print(&A);buildlinklist(&B, b);printf("\nB单链表元素为:");print(&B);linklist C = jiaoji(&A, &B);printf("\nC单链表元素为:");print(&C);return 0;
}

测试结果如下

2.27 对2.25题的条件作以下两点修改,对顺序表重新编写求得表C的算法
(1)假设在同一表(A或B)中可能存在值相同的元素,但要求新生成的表C中的元素值各不相同;
(2)利用A表空间存放表C。 

本题代码如下

sqlist jiaoji(sqlist* a, sqlist* b)
{int i = 0; // 定义一个整型变量,用于遍历顺序表aint j = 0; // 定义一个整型变量,用于遍历顺序表bint k = 0; // 定义一个整型变量,用于记录交集元素在结果中的位置int c[Max];for (i = 0; i < a->length; i++)c[i] = a->s[i];i = 0;while (i < a->length && j < b->length) // 当两个顺序表都没有遍历完时,进行循环{if (c[i] == b->s[j]) // 如果顺序表a和b当前位置的元素相等{a->s[k++] = c[i++]; // 将该元素添加到交集结果中,并将交集长度加1j++; // 顺序表b的指针向后移动一位}else if (c[i] < b->s[j]) // 如果顺序表a当前位置的元素小于顺序表b当前位置的元素{i++; // 顺序表a的指针向后移动一位}else // 如果顺序表a当前位置的元素大于顺序表b当前位置的元素{j++; // 顺序表b的指针向后移动一位}}a->length = k;return *a; // 返回交集结果
}

完整测试代码如下

#include<stdio.h>
#define Max 10
typedef struct sqlist
{int s[Max]; // 定义一个结构体数组,用于存储顺序表的元素int length; // 定义一个整型变量,用于存储顺序表的长度
}sqlist;
// 定义一个函数,用于求两个顺序表的交集
sqlist jiaoji(sqlist* a, sqlist* b)
{int i = 0; // 定义一个整型变量,用于遍历顺序表aint j = 0; // 定义一个整型变量,用于遍历顺序表bint k = 0; // 定义一个整型变量,用于记录交集元素在结果中的位置int c[Max];for (i = 0; i < a->length; i++)c[i] = a->s[i];i = 0;while (i < a->length && j < b->length) // 当两个顺序表都没有遍历完时,进行循环{if (c[i] == b->s[j]) // 如果顺序表a和b当前位置的元素相等{a->s[k++] = c[i++]; // 将该元素添加到交集结果中,并将交集长度加1j++; // 顺序表b的指针向后移动一位}else if (c[i] < b->s[j]) // 如果顺序表a当前位置的元素小于顺序表b当前位置的元素{i++; // 顺序表a的指针向后移动一位}else // 如果顺序表a当前位置的元素大于顺序表b当前位置的元素{j++; // 顺序表b的指针向后移动一位}}a->length = k;return *a; // 返回交集结果
}
int main()
{sqlist a, b; // 定义两个顺序表变量a和bint i = 0; // 定义一个整型变量,用于遍历顺序表a和ba.length = 5; // 设置顺序表a的长度为5b.length = 5; // 设置顺序表b的长度为5printf("请输入A顺序表的元素:"); // 提示用户输入顺序表a的元素for (i = 0; i < a.length; i++) // 遍历顺序表ascanf("%d", &a.s[i]); // 读取用户输入的元素并存储到顺序表a中printf("请输入B顺序表的元素:"); // 提示用户输入顺序表b的元素for (i = 0; i < b.length; i++) // 遍历顺序表bscanf("%d", &b.s[i]); // 读取用户输入的元素并存储到顺序表b中sqlist c = jiaoji(&a, &b); // 调用函数求两个顺序表的交集,并将结果存储到变量c中printf("交集存于A顺序表中的元素:"); // 提示用户输出交集结果for (i = 0; i < c.length; i++) // 遍历交集结果printf("%d ", c.s[i]); // 输出交集结果中的每个元素return 0; // 程序正常结束,返回0
}

测试结果为

2.28 对2.25题的条件作以下两点修改,对单链表重新编写求得表C的算法
(1)假设在同一表(A或B)中可能存在值相同的元素,但要求新生成的表C中的元素值各不相同;
(2)利用A表空间存放表C。

本题代码如下

linklist Union(linklist* A, linklist* B)
{lnode* ra = (*A)->next, * rb = (*B)->next;(*A)->next = NULL;lnode* r = *A;while (ra && rb){if (ra->data<rb->data)//若A中当前结点小于B中当前结点值{r->next = ra;r = ra;ra = ra->next;r->next = NULL;}else if (ra->data>rb->data)//若A中当前结点大于B中当前结点值{r->next = rb;r = rb;rb = rb->next;r->next = NULL;}else{r->next = ra;r = ra;ra = ra->next;rb= rb->next;r->next = NULL;}}r->next = NULL; //结果表的表尾结点置空return *A;
}

完整测试代码如下

#include<stdio.h>
#include<stdlib.h>
typedef struct lnode
{int data;struct lnode* next;
}lnode, * linklist;
int na = 5;
int nb = 5;
int a[5] = { 1,3,5,7,9};
int b[5] = {1,2,3,4,5};
void buildlinklist(linklist* L, int arr[], int n)//创建链表
{*L = (lnode*)malloc(sizeof(lnode));(*L)->next = NULL;lnode* s = *L, * r = *L;int i = 0;for (i = 0; i < n; i++){s = (lnode*)malloc(sizeof(lnode));s->data = arr[i];s->next = r->next;r->next = s;r = s;}r->next = NULL;
}
linklist Union(linklist* A, linklist* B)
{lnode* ra = (*A)->next, * rb = (*B)->next;(*A)->next = NULL;lnode* r = *A;while (ra && rb){if (ra->data<rb->data)//若A中当前结点小于B中当前结点值{r->next = ra;r = ra;ra = ra->next;r->next = NULL;}else if (ra->data>rb->data)//若A中当前结点大于B中当前结点值{r->next = rb;r = rb;rb = rb->next;r->next = NULL;}else{r->next = ra;r = ra;ra = ra->next;rb= rb->next;r->next = NULL;}}r->next = NULL; //结果表的表尾结点置空return *A;
}
void print(linklist* L)//输出单链表
{lnode* k = (*L)->next;while (k){printf("%d ", k->data);k = k->next;}
}
int main()
{linklist A, B;buildlinklist(&A, a, na);buildlinklist(&B, b, nb);printf("A链表为:");print(&A);printf("\nB链表为:");print(&B);linklist C = Union(&A, &B);printf("\n两个表元素交集的链表为:");print(&C);return 0;
}

2.29 已知A,B和C为三个递增有序的线性表,现要求对A表作如下操作:删去那些既在B表中出现又在C表中出现的元素。试对顺序表编写实现上述操作的算法,并分析你的算法的时间复杂度(注意:题中没有特别指明同一表中的元素值各不相同)。

本题代码如下

void delete_common_elements(int A[], int B[], int C[], int* lenA, int* lenB, int* lenC) 
{int i = 0, j = 0, k = 0;while (i < *lenA && j < *lenB && k < *lenC) {if (A[i] == B[j] && A[i] == C[k]){for (int m = i; m < *lenA - 1; m++) {A[m] = A[m + 1];}(*lenA)--;}else if (A[i] < B[j]) {j++;}else if (A[i] < C[k]){k++;}else {i++;}}
}

完整测试代码为

#include <stdio.h>
void delete_common_elements(int A[], int B[], int C[], int* lenA, int* lenB, int* lenC) 
{int i = 0, j = 0, k = 0;while (i < *lenA && j < *lenB && k < *lenC) {if (A[i] == B[j] && A[i] == C[k]){for (int m = i; m < *lenA - 1; m++) {A[m] = A[m + 1];}(*lenA)--;}else if (A[i] < B[j]) {j++;}else if (A[i] < C[k]){k++;}else {i++;}}
}
int main() {int A[] = { 1, 2, 3, 4, 5 };int B[] = { 2, 3, 4,5,6 };int C[] = { 3, 4, 5,6,7 };int lenA = sizeof(A) / sizeof(A[0]);int lenB = sizeof(B) / sizeof(B[0]);int lenC = sizeof(C) / sizeof(C[0]);delete_common_elements(A, B, C, &lenA, &lenB, &lenC);for (int i = 0; i < lenA; i++) {printf("%d ", A[i]);}return 0;
}

 测试结果为

2.30 要求同2.29题.试对单链表编写算法,请释放A表中的无用结点空间。

本题代码如下

void deleterepeat(linklist* A, linklist* B, linklist* C)
{lnode* ra = (*A)->next, *rb = (*B)->next, * rc = (*C)->next;lnode* r = *A,*q;while (ra&&rb&&rc){if (ra->data == rb->data && ra->data == rc->data){q = ra;r->next = ra->next;ra = ra->next;rb = rb->next;rc = rc->next;free(q);}else if(rb->data<ra->data){rb = rb->next;}else if (rc->data < ra->data){rc = rc->next;}else{r = ra;ra = ra->next;}}
}

完整测试代码如下

#include<stdio.h>
#include<stdlib.h>
typedef struct lnode
{int data;struct lnode* next;
}lnode,*linklist;
int a[5] = { 2,3,4,5,6 };
int b[5] = { 3,4,5,6,7 };
int c[5] = { 1,2,3,4,5 };
int n = 5;
void buildlinklist(linklist* L,int str[])
{*L = (lnode*)malloc(sizeof(lnode));(*L)->next = NULL;lnode* s, * r = *L;int i = 0;for (i = 0; i < n; i++){s = (lnode*)malloc(sizeof(lnode));s->data = str[i];s->next = r->next;r->next = s;r = s;}r->next = NULL;
}
void deleterepeat(linklist* A, linklist* B, linklist* C)
{lnode* ra = (*A)->next, *rb = (*B)->next, * rc = (*C)->next;lnode* r = *A,*q;while (ra&&rb&&rc){if (ra->data == rb->data && ra->data == rc->data){q = ra;r->next = ra->next;ra = ra->next;rb = rb->next;rc = rc->next;free(q);}else if(rb->data<ra->data){rb = rb->next;}else if (rc->data < ra->data){rc = rc->next;}else{r = ra;ra = ra->next;}}
}
void print(linklist* L)
{lnode* k = (*L)->next;while (k){printf("%d ", k->data);k = k->next;}
}
int main()
{linklist A, B, C;buildlinklist(&A, a);buildlinklist(&B, b);buildlinklist(&C, c);deleterepeat(&A, &B, &C);printf("删除之后的A单链表中的元素为:");print(&A);return 0;
}

测试结果为

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/209268.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[架构之路-256]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 软件系统不同层次的复用与软件系统向越来越复杂的方向聚合

目录 前言&#xff1a; 一、CPU寄存器级的复用&#xff1a;CPU寄存器 二、指令级复用&#xff1a;二进制指令 三、过程级复用&#xff1a;汇编语言 四、函数级复用&#xff1a;C语言 五、对象级复用&#xff1a;C, Java, Python 六、组件级复用 七、服务级复用 八、微…

Swift下如何使用#if条件编译

一、OC使用条件编译 OC中可以使用宏定义&#xff0c;再使用条件编译 #define USER_CUSTOM使用 #if USER_CUSTOM //其他代码 #endif二、Swift使用条件编译 Swift 不像ObjectC一样&#xff0c;通过定义一个变量&#xff0c;然后使用**#if #endif** 方法。swift需要设置一下才能…

2 文本分类入门:TextCNN

论文链接&#xff1a;https://arxiv.org/pdf/1408.5882.pdf TextCNN 是一种用于文本分类的卷积神经网络模型。它在卷积神经网络的基础上进行了一些修改&#xff0c;以适应文本数据的特点。 TextCNN 的主要思想是使用一维卷积层来提取文本中的局部特征&#xff0c;并通过池化操…

搭建Appium工具环境

1、安装Java Development Kit&#xff08;JDK&#xff09; 前往Oracle官网下载JDK。 在https://www.oracle.com/java/technologies/javase-jdk11-downloads.html 找到最新版本的JDK。根据操作系统选择适合的版本&#xff0c;并根据指示下载安装程序。 安装JDK。运行下载的安…

Unittest单元测试之unittest用例执行顺序

unittest用例执行顺序 当在一个测试类或多个测试模块下&#xff0c;用例数量较多时&#xff0c;unittest在执行用例 &#xff08;test_xxx&#xff09;时&#xff0c;并不是按从上到下的顺序执行&#xff0c;有特定的顺序。 unittest框架默认根据ACSII码的顺序加载测试用例&a…

从薛定谔的猫——量子理论基础

在介绍量子理论基础之前&#xff0c;先介绍一下薛定谔的猫的故事&#xff0c;这个故事可能大多数朋友并不陌生&#xff0c;下面首先回顾一下&#xff1a; 薛定谔的猫是一个在量子力学中用来说明量子叠加态和测量结果的思维实验。这个思维实验最早由物理学家Erwin Schrdinger在1…

【技术干货】宇视IPC音频问题解决步骤

近期技术人员从宇视官网下载sdk进行二次开发时&#xff0c;在启动实时直播&#xff0c;并通过回调函数拿到流数据&#xff0c;发现没有音频流数据。 通过下面的数据发现&#xff0c;codeType此字段一直是28&#xff0c;代表的是H.264数据&#xff0c;但未没发现有音频的数据包…

【Altera】Cyclone10 FPGA DDR3使用

目录 开发板 硬件 框图 原理图 测试工具 DDR IP核配置 调试及遇到的问题 读写仲裁时序 问题1.拉高read后&#xff0c;wait一直没反应 问题2.DDR校正不过的一个可能性 延伸学习 开发板 Intel官方提供c10的开发套件&#xff1a;Intel Cyclone 10 GX FPGA Development …

替代升级虚拟化 | ZStack Cloud云平台助力中节能镇江公司核心业务上云

数字经济正加速推动各行各业的高质量升级发展&#xff0c;云计算是数字经济的核心底层基础设施。作为云基础软件企业&#xff0c;云轴科技ZStack 坚持自主创新&#xff0c;自研架构&#xff0c;产品矩阵可全面覆盖数据中心云基础设施&#xff0c;针对虚拟化资源实现纳管、替代和…

Selenium——isDisplayed()、isEnabled()、isSelected()

判断页面是否存在某元素 Selenium没有直接提供判断是否存在的方法&#xff0c;可以使用findElements返回的数量判断&#xff1b;或者判断findElement是否抛出异常 webDriver.findElements(By.xpath("(//div[classel-button-group]//button)[1]")).size()isDisplaye…

mysql-日期和时间函数

1.获取日期、时间 SELECT CURDATE(),CURTIME(),NOW(),UTC_DATE(),UTC_TIME() FROM dual; 2.日期与时间戳的转换 SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP(NOW()),FROM_UNIXTIME(UNIX_TIMESTAMP()) FROM dual; 3.获取月份、星期、星期数、天数等函数 SELECT YEAR(CURDATE()),MON…

【带头学C++】----- 九、类和对象 ---- 9.1 类和对象的基本概念----(9.1.4---9.1.6)

目录 9.1.4 设计立方体类 ​编辑 9.1.5 成员函数在类的外部实现 9.1.6 类在其他源文件的实现步骤&#xff08;实现类在不同文件的实现&#xff0c;后续引出构造函数&#xff09; 注意:类定义在同文件testclass.h中&#xff0c;而testclass.cpp是用来实现&#xff08;声明&…

项目实战一-性能测试筑基

这里写目录标题 一、为什么程序会出现性能问题、性能问题是怎么出现的&#xff1f;二、功能测试和性能测试的区别是什么&#xff1f;三、核心性能指标1、用户角度核心a、响应时间&#xff1a;b、并发量 2、成本角度3、运维角度面试题、并发量和吞吐量得区别&#xff1f;a、吞吐…

Centos7安装GItLab(在线版)

基础环境准备 1.配置清华大学镜像仓库 新建仓库配置文件使用 vim /etc/yum.repos.d/gitlab-ce.repo 命令&#xff0c;输入以下内容,保存 [gitlab-ce] nameGitlab CE Repository baseurlhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck0 enabl…

【文献阅读笔记】基于自监督的异常检测和定位:SSM

2022 IEEE TRANSACTIONS ON MULTIMEDIA 领域&#xff1a;异常检测 目标&#xff1a;图像输入数据 文章目录 1、模型2、方法2.1、random masking2.2、restoration network2.3、损失函数2.4、推理时的渐进细化 3、实验4、引用5、想法 1、模型 训练&#xff1a; 每个图像实时生成随…

Springboot 使用 阿里的 druid 连接池 启用 wall sql防火墙的情况下怎么支持多sql同时执行?

1、问题如上&#xff0c;看了不少网上的文章&#xff0c;在我这都不生效&#xff0c;网上主要的解决思路有两个。 第一个是&#xff1a;去掉配置文件中的 wall filter # 修改之前 spring.datasource.druid.filtersstat,wall,log4j# 修改之前 spring.datasource.druid.filte…

Zotero 安装及常用插件设置指南

Zotero 安装及常用插件设置指南 本指南旨在帮助用户安装并配置 Zotero。通过本教程&#xff0c;您将能够实现以下功能&#xff1a; 界面语言设置为中文使用颜色标签来区分不同阅读状态的文献重要文献标记显示影响因子、JCP和中科院分区翻译插件Sci-Hub 集成 安装和设置步骤…

【OpenGL】Clion配置

OpenGL简介 OpenGL&#xff08;Open Graphics Library&#xff09;是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像&#xff08;二维的亦可&#xff09;&#xff0c;是一个功能强大&#xff0c;调用方便的底层图形库。OpenGL是行业领域中…

算法——滑动窗口

滑动窗口大致分为两类&#xff1a;一类是窗口长度固定的&#xff0c;即left和right可以一起移动&#xff1b;另一种是窗口的长度变化&#xff08;例如前五道题&#xff09;&#xff0c;即right疯狂移动&#xff0c;left没怎么动&#xff0c;这类题需要观察单调性(即指针)等各方…

关于随机数的设定和随机噪声

以下是设立随机数和随机噪声的code&#xff1a; 设定随机数的方法有很多&#xff0c;下面代码是通过numpy的API设定随机数&#xff0c;除了numpy&#xff0c;实际上scikit&#xff0c;tf&#xff0c;pytorch都有设定随机数的API的 # Set a random seed for reproducibility(0…