- 博客(24)
- 问答 (3)
- 收藏
- 关注
原创 数据结构-双链表插入数据
typedef struct Node{ int number; struct Node *pre; struct Node *next; }Node,*NodList; NodList NodInsert(NodList L,int num,int add){ NodList *r; r=(Node*)malloc(sizeof(Node)); r->pre=NULL; r->next=NULL; r->number=num; if(add==1) { hea.
2022-01-14 11:15:17
219
原创 数据结构-双链表的创建
typedef struct Node{ int number; struct Node *pre; struct Node *next; }Node,*NodList; NodList NodCreat(NodList L){ int num,x,cart=1; L=(Node*)malloc(sizeof(Node)); L->pre=NULL; L->next=NULL; scanf("%d",&num); scanf("%d",&x); L->.
2022-01-14 10:35:11
267
原创 数据结构-单链表(C语言)
#include<stdio.h> typedef struct Node{ int number; struct Node *next; }Node,*NodList NodList nodinit(){ Node *L; L=(Node*)malloc(sizeof(Node)); if(L==NULL) printf("无法申请空间"); L->next=NULL; } NodList NodCreat(){ Node *L; L=(Node*)ma.
2022-01-14 10:10:17
294
原创 程序设计——指针
一个班有三个学生,每人四门成绩,需要输出平均分,并查找第n个学生成绩 要求:使用指针 #include<stdio.h> int main() { int per(int*p,int n);//定义可以求平均数的函数 void search(int(*p)[4],int n);//定义查找学生成绩的函数 int a[3][4]={{20,30,40,50},{30,40,50,60},{60,70,80,90}};//定义了数组 int (*p)[4],aver;/...
2022-01-03 23:30:37
727
原创 ZOJ-A + B Problem
Calculate a + b Input The input will consist of a series of pairs of integers a and b,separated by a space, one pair of integers per line. Output For each pair of input integers a and b you should output the sum of a and b in one line,and with one line
2021-12-16 14:54:00
255
原创 时间复杂度和空间复杂度
前几期关于分治算法的讲解,这一块我几乎没讲,所以现在来补。 时间复杂度 时间复杂度指输入数据大小为NN时,算法运行所需花费的时间。 算法运行时间受到编程语言 、计算机处理器速度、运行环境等多种因素影响,并与计算操作数量呈正相关。体现的是计算操作随数据大小变化时的变化情况。 假设算法运行总共需要“1次操作”或“100次操作”,此两情况的时间复杂度都为常数级 O(1); 即设需要操作 (k*n+b)次,无论k取何种有限数值,则时间复杂度都为O(n); 当然对于双层嵌套循环 for(i=0;...
2021-12-14 12:25:57
933
原创 力扣-盛最多水的容器(双指针)
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器 代码: int maxArea(int* height, int heightSize){ int i,j=heightSize,max,h; max=height[0]>height[j-1]?(j-1)...
2021-12-12 12:31:40
365
转载 力扣-验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 解释:"amanaplanacanalpanama" 是回文串 代码: bool isPalindrome(char * s){ if(strlen(s)==0||strlen(s)==1)//先解决字符串长度为0或1的特殊情况 retur
2021-12-11 20:34:09
188
原创 力扣-数组中的第K个最大元素(分治法)
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 提示: 1 <= k <= nums.length <= 104 -104<= nums[i] <= 104 代码: int findKthL..
2021-12-10 13:48:52
782
原创 力扣-颜色分类
给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。 示例 1: 输入:nums = [2,0,2,1,1,0] 输出:[0,0,1,1,2,2] 示例 2: 输入:nums = [2,0,1] 输出:[0,1,2] 提示: n == nums.length 1 <= n <= 300 nums[i] 为 0、1 或 2 代码: 方法一..
2021-12-10 13:03:51
164
原创 力扣-删除排序数组中的重复项Ⅱ
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 代码是看别人的(写的很棒,太妙了!),自己写的太啰嗦了,而且不对 于是将别人的代码搬了过来,但给了注释 int removeDuplicates(int* nums, int numsSize){ int len = 0;//先定义数组长度为0 for (int i =
2021-12-09 20:42:38
217
原创 力扣-删除排序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 int removeDuplicates(int* nums, int numsSize){ int i,j; for(i=1;i<numsSize;i++) { if(nums[i]==nums[i-1]) {
2021-12-09 19:18:33
202
原创 删除字符串中指定字母 双指针
7-1 删除字符串中指定字母 (20 分) 请使用指针的方法编写程序,程序的功能是从键盘输入一个字符串(字符串长度小于100),删除其中的字母a后输出。例如,输入字符串abcaca,输出bcc。 输入样例: abcaca 结尾无空行 输出样例: bcc 结尾无空行 代码: #include<stdio.h> #define MAXN 100 int main() { int i,j=0; char a[MAXN]; gets(a); for(i=
2021-12-09 18:57:03
878
原创 算法导论—分治策略(C语言)
在分治策略中,我们递归的求解一个问题,在每层递归中应用以下三个步骤: 1.分解 将问题划分为一个个子问题,子问题形式与原问题一致,只是规模更小 2.解决 这里的解决是指递归的求解出子问题,或对子问题直接求解(当子问题足够小) 3.合并 将子问题的解组合成原问题的解 总的来说,分治策略即分而治之,再合。 递归式 递归式与分治方法是紧密相关的。递归式是通过更小的输入上的函数值来描述一个函数,它可以有很多形式。 下面我们主要介绍三种求解递归式的方法: 1.代入法 我们猜测一个界,...
2021-12-02 18:40:41
781
原创 力扣-移除元素
给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 法一: void moveZeroes(int* nums, int numsSize){ int i,j,k=numsSize-1; for(i=numsSize-1;i>=0;i--)//按逆序遍历每个元素 ...
2021-12-02 10:07:22
292
原创 冒泡排序法
冒泡排序法: 冒泡排序属于一种典型的交换排序。交换排序顾名思义就是通过元素的两两比较,判断是否符合要求,如过不符合就交换位置来达到排序的目的。冒泡排序名字的由来就是因为在交换过程中,类似水冒泡,小(大)的元素经过不断的交换由水底慢慢的浮到水的顶端。 #include<stdio.h> int main() { int n[10], i, j, temp; for(i=0;i<10;i++) scanf("%d",&n[i]); for (i = 1; i <
2021-12-01 19:02:04
206
原创 数字结合体输出个数
给定数组大小 #include<stdio.h> int main() { char a[10]; int i,s=0; scanf("%s",a); for(i=0;i<9;i++) { if((a[i]>='a'&&a[i]<='z')&&(a[i+1]>='a'&&a[i+1]<='z'))//a a { continue; } if((a[i]>='a'&&a
2021-11-28 12:30:07
472
原创 力扣:搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请使用时间复杂度为 O(log n) 的算法。 int searchInsert(int* nums, int numsSize, int target){ int i; for(i=0;i<numsSize;i++) { if(target<=nums[i]) return i; } re
2021-11-27 18:18:48
110
原创 力扣-寻找数组的中心下标
想要找出就数组的中心下标,主要有两种方法: 1.将数组分为两部分,使中心下标对应的数左右两边值的和相等 2.先计算总和,然后遍历计算left总和,如果left总和×2加当前值等于总和,就返回当前值 方法一. int pivotIndex(int* nums, int numsSize) { int i,j,k,sum1=0,sum2=0; for(i=1;i<numsSize;i++) { for(j=0;j<=(i-1);j++)
2021-11-27 18:01:55
310
原创 算法导论:递归求解 寻找中间位置的最大子数组
//递归求解 寻找中间位置的最大子数组 int search(int*data,int low,int mid,int high,int left,int right)//data为数组,low,mid,right三个边界将数组分为两部分,left,right为返回最大子数组的左右边界 { int left_sum=0,sum=0,i;//sum为临时子数组之和 for(i=mid;i>=low;i--)//i从mid开始向左遍历 { sum=sum+data[i];//sum存放[i,m.
2021-11-27 13:49:23
184
原创 算法导论:暴力求解 最大子数组问题
//暴力求解 最大子数组问题 int search(int*data,int low,int high,int left,int right)//data为数组,low,right为数组边界,left,right存放返回最大子数组的左右边界 { int sum=0,i,j,sum_temp;//给sum赋初值为0,方便sum和sum_temp的第一次比较,sum_temp为临时存放数组和的元素 for(i=low;i<=high;i++)//用i遍历数组 { sum_temp=0;//规定.
2021-11-27 13:14:25
388
原创 算法导论 排序
直接插入排序法 原理:从无序数列向左遍历,从有序数组向左比较 //插入排序法 void straightsort(int*arr,int len) { int temp,i,j; for(i=1;i<len;i++)//将首元素看成有序数组,i=1表示从第二个元素开始排序 { temp=arr[i];//temp存放待插入元素 for(j=i-1;j>=0&&arr[j]>temp;j--
2021-11-27 12:13:19
113
原创 无C不行—废物一个—学习第一天打卡:C语言,Python练习题(CN教程)
C语言: 1.使用 printf() 输出 "Hello, World!"。 #include<stdio.h> int main() { printf("Hello,World!"); return 0; } 2.使用printf()与%d格式化输出整数。 #include<stdio.h> int main() { int number; scanf("%d",&number); printf("%d",num...
2021-11-20 18:03:16
158
原创 题目:求解该线性规划对应的最大值z以及x1,x2,x3
代码如下: >> c=[2;3;-5]; >> a=[2 -5 1;1 3 1]; >> b=[10;12]; >> aeq=[1 1 1]; >> beq=[7]; >> vlb=[0 0 0]; >> vub=[inf inf inf]; >> [x,fval]=linprog(-c,a,b,aeq,beq,vlb,vub); >> x >> fval
2021-11-06 18:48:38
246
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅