【考研】2026/4/9

张开发
2026/4/10 6:55:10 15 分钟阅读

分享文章

【考研】2026/4/9
政治2026/4/9马克思主义哲学、马克思主义政治经济学和科学社会主义是马克思主义理论体系的三个基本组成部分。1848年2月《共产党宣言》发表标志着马克思主义的公开问世。马克思主义的产生具有深刻的社会根源、阶级基础和思想渊源①社会根源。工业革命和科技进步极大地提高了劳动生产率促进了生产力的发展。资本主义生产方式一方面带来了社会化大生产的迅猛发展另一方面又造成了深重的社会灾难。第一社会两极分化工人极端困苦。第二周期性经济危机频繁爆发。 ②阶级基础。无产阶级在反抗资产阶级剥削和压迫的斗争中逐步走向自觉并迫切渴望科学的理论指导。19世纪30一40年代法、英、德的三大工人运动法国里昂工人的两次起义、英国宪章运动、德国西里西亚纺织工人起义标志着现代无产阶级作为独立的政治力量登上了历史舞台。觉醒了的无产阶级迫切需要总结和升华自身的斗争经验形成科学的革命理论以指导自身的解放斗争。 ③思想渊源。19世纪西欧三大先进思潮德国古典哲学、英国古典政治经济学、英法空想社会主义为马克思主义的创立提供了直接的理论来源。19世纪的三大科学发现即细胞学说、能守恒与转化定律、生物进化论为马克思主义的产生提供了自然科学前提。时间线梳理1844年2月马克思、恩格斯《德法年鉴》唯心主义→唯物主义、革命民主主义→共产主义奠定思想前提1844年8月底马克思、恩格斯《神圣家族》开始毕生的合作1845年马克思、恩格斯《德意志意识形态》首次阐述历史唯物主义的基本观点1848年马克思、恩格斯《共产党宣言》世界第一个无产阶级政党——共产主义者同盟1867年马克思《资本论》工人阶级的圣经1871年3月马克思《法兰西内战》巴黎工人起义→巴黎公社之后几年马克思《哥达纲领批判》进一步丰富科学社会主义学说1876—1878年恩格斯《反杜林论》全面阐述马克思主义理论体系马克思主义的“百科全书”1883年恩格斯《资本论》第二三卷、《家庭、私有制和国家的起源》、《路德维希·费尔巴哈和德国古典哲学的终结》进一步发展了马克思主义理论英语2026/4/9①Under the plan, for example, the agency said it would not prosecute landowner or businessthat unintentionally skill, harm, or disturb the bird, as long as they had signed a range-wide management planto restore prairie chicken habitat.在此项计划之下例如该机构表示它不会起诉非法故意杀死、伤害或骚扰该鸟类的土地所有者或企业只要他们已经签署一项为恢复草原榛鸡栖息地的大范围管理计划。agency n. 代理机构prosecutev. 起诉控告检举unintentionallyadv. 非故意地偶然地disturbv. 打扰干扰signv. 签字 n. 迹象标志手势restore v. 恢复prairien. 大草原habitatn. 栖息地②Theyre part of a bunch of celebritiesstarring in a new video for World Environment Dayencouraging you, the consumer, to swap out your single-use plastic staples like straws and cutlery to combat the plastics crisis.他们是一群名人在世界环境日拍摄的新视频中的一员鼓励消费者更换吸管和餐具等一次性塑料用品以应对塑料危机。a bunch of一串一群starn. 星星 v. 主演straw n. 吸管cutleryn. 餐具刀具combatv. 战斗应对数学2026/4/9专业课数据结构2026/4/9复杂度时间复杂度空间复杂度所有语句被重复执行的次数之和通常以最高级数为衡量标准算法所需的存储空间如辅助空间int fact(int t){ if(n1) return 1; return n*fact(n-1); }// 时间复杂度为O(n) 空间复杂度为O(1)线性表注意线性表是一个逻辑结构!定义线性表是具有相同的数据类型的 n (n≥0) 个数据元素的有限序列。下面的是线性表的物理存储①顺序表顺序表逻辑上顺序物理上也顺序。详细讲义首先得有一个线性表的逻辑框架吧typedef struct{ ElemType *data; // ElemType 可以替换成 int、float 等这里只是笼统说法 int MaxSize, length; }SeqList; // SeqList 只是给这个框架命了一个名字而已至于这个框架有什么看下*dataMaxSizelength很多人不理解为什么 data 要一个 * C语言中 * 表示取地址符号即指针因为现在是我们理想的状态线性表里要有元素但是计算机只认地址*data就是告诉计算机从data指向的地址读写数据但注意现在并没有明确分配地址这只是个逻辑上的形式。这里指当前线性表分配的最大空间的大小C语言并没有对越界的处理手段因此必须自己手动处理需要知晓当前的状况防止程序崩溃记录当前线性表有多长即存了多少个数据初始化线性表分配连续的物理空间设置各个数据初值void InitList(SeqList L){ // 解释一下为什么要用为取值符号意思将逻辑框架为SeqList的线性表L中的所有数据传入这个函数进行计算 L.data (ElemType *)malloc(100*sizeof(ElemType)); // malloc函数(ElemType *)指明data为ElemType类型的指针这里不是取地址的意思了而是一种说明注意区分 (100*sizeof(ElemType))是请求分配100个ElemType类型的大小空间比如32位的计算机里一个int类型占4字节 L.length 0; // 当前啥数据也没有所以0 L.MaxSize 100; // 因为请求了100个所以100 }其实你会发现data就是数组所以可以直接用 L.data[i] 来指向数据接下来就是各种增删改查的操作按理说应该先判断存储空间是否分配成功但是这是数据结构关注逻辑上的操作增在第 i 个位置插入数据为 e 的元素 这里是以 true 和 false 来判断的可以自定义成自己想要的bool ListInsert(SeqList L, int i, ElemType e){ if(i1 || iL.length1) return false; // i不合法 if(L.length L.MaxSize) return false; // 空间已满无法插入 for(int jL.length; ji; j--){ // 因为插入必会抢占一个空间由于是连续分配在i-1之后的位置都需要后移一个 L.data[j] L.data[j-1]; L.data[i-1] e; } L.length; return true; }删删除第 i 个位置的值并记录被删除的元素赋值给 e bool ListDelete(SeqList L, int i, ElemType e){ // 想想为什么e要用 if(i1 || iL.length1) return false; e L.data[i-1]; for(int ji; jL.length; j){ L.data[j-1] L.data[j]; } L.length--; return true; }改改就是在查的基础上将值修改即可但是得注意具体原因如下“查”查查找数据为 e 的元素返回其位置第几个int Search(SeqList L, ElemType e){ // 有人会问为什么这里的L没有仔细看看前面“查”并没有对数据进行修改等操作需要操作的前文提到的“计算”才需要如果没有即使修改了数据原数据依旧不变。所以没有函数运行的是复印件原件不变有函数运行的是原件 int i; for(i0; iL.length; i){ if(L.data[i] e) return i1; } return 0; }来两道LeetCode题两数之和给定一个整数数组nums和一个整数目标值target请你在该数组中找出和为目标值target的那两个整数并返回它们的数组下标。你可以假设每种输入只会对应一个答案并且你不能使用两次相同的元素。你可以按任意顺序返回答案。示例 1输入nums [2,7,11,15], target 9 输出[0,1] 解释因为 nums[0] nums[1] 9 返回 [0, 1] 。示例 2输入nums [3,2,4], target 6 输出[1,2]示例 3输入nums [3,3], target 6 输出[0,1]题解int* twoSum(int* nums, int numsSize, int target, int* returnSize) { int i, j; // i为第一个下标j为第二个下标 int* result malloc(2*sizeof(int)); // 分配2个int大小的空间 for(int i0; inumsSize-1; i){ // i左j右双指针思想 for(int ji1; jnumsSize; j){ if(nums[i]nums[j] target){ // 找到目标 result[0] i; // 记录当前i result[1] j; // 记录当前j *returnSize 2; // 都传了一个参进来必须对它有所操作 return result; // 返回结果你会发现整个函数是int *类型的所以返回的result就是int *类型的 } } } return 0; // 没找到返回0 }盛最多水的容器给定一个长度为n的整数数组height。有n条垂线第i条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明你不能倾斜容器。示例 1输入[1,8,6,2,5,4,8,3,7] 输出49 解释图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下容器能够容纳水表示为蓝色部分的最大值为 49。示例 2输入height [1,1] 输出1题解int min(int a, int b){ // 最小值 return a b ? b : a; } ​ int maxArea(int* height, int heightSize) { int left 0, right heightSize-1; // 左右指针 int maxWater 0; // 记录最多的水 while(left right){ int currentWater min(height[left], height[right]) * (right-left); if(currentWater maxWater){ maxWater currentWater; } if(height[left]height[right]){ // 想想是不是这样的 right--; }else{ left; } } return maxWater; }

更多文章