自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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-&gt.

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关注的人

提示
确定要删除当前文章?
取消 删除