自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程伟耀的博客

二本龙鸣大学生

  • 博客(33)
  • 收藏
  • 关注

原创 力扣 1566.重复至少k次且长度为M的模式(c语言)

1.题目描述2.核心思路一个暴力方法,主要就是锁定每次要比较的长度,然后依次移动去比较是否相同,难点就是怎么比较3.代码实现bool containsPattern(int* arr, int arrSize, int m, int k){ for(int i=0;i<=arrSize-m*k;i++) { bool flag=true; for(int j=i;j<m*k+i;j++)

2022-01-15 09:04:21 329

原创 c++学习第四天

1.代码区具有两个特点:1是共享,即我们点开很多同一文件,但只执行那一段代码,并不会在生成另一份代码。2是可读,即代码只可读,但不能写,不然会被修改数据,游戏金币2.全局区1.全局区中存放的变量1.全局变量#include<iostream>int a=10;//全局变量int main(){}2.静态变量static int a=10;3.字符串常量"hello world"4.全局常量#include<iostream>const i.

2022-01-14 23:03:01 328

原创 力扣 1291.顺次数(c语言)

1.题目描述2.核心思路前言:这个题目我一开始用了我的方法像个龙鸣一样,不停去拆分数,用数组装起来,然后判断数组间的差值为1就行,然后这个思路做完以后是超时的,菜狗的我只能去看了题解。(这个可看可不看)思路:我们只用制造出顺次数,然后再进去判断是否再那个范围内就行了。就这么简单,就这么简单。3.代码展示/** * Note: The returned array must be malloced, assume caller calls free(). */int

2022-01-14 21:35:17 333

原创 c++学习第三天

1.c++冒泡排序的实现#include <iostream>#include <ctime>using namespace std;int main(){ srand(time(0)); int array[10]; for (int i = 0; i < 10; i++) { array[i] = rand() % 50 + 1; } for (int i = 0; i < 10; i++)

2022-01-12 20:19:16 288

原创 力扣 349.两个数组的交集(c语言)

1.题目描述2.思路讲解乍一看这题好像挺简单,但我写的时候也出现了很多问题。终究还是自己太菜了。我最后是使用的哈希表来解决,因为测试用例中没有出现负数,所以可行(对我来说),创建两个哈希表,最后值只要不为0就代表一定为交集3.代码实现int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){ //创建两个哈希表 int hamps1[1000]

2022-01-12 09:08:24 1637

原创 c++学习第二天

1.前置递增和后置递增的区别1.前置递增#include <iostream>using namespace std;int main(){ int a1 = 10; int b1 = a1++; cout << "a1=" << a1 << endl; cout << "b1=" << b1 << endl; return 0;}​结果:a1=11b1=10

2022-01-11 21:02:09 157

原创 插入排序(c语言)

1.插入排序插入排序是经典排序算法之一,对我而言,不太习惯用它,因为冒泡排序写起来更简单,而当冒泡排序不管用的时候,就会直接使用快速排序了,但作为经典算法我们不能不会。2.核心思想3.代码实现#include <stdio.h>#include <time.h>#include <stdlib.h>void Printarray(int* a,int n)//打印数组{ for (int i = 0; i < n; i++.

2022-01-10 22:41:07 381

原创 c++学习第一天

1.字符串表示方法#include <iostream>#include <string>using namespace std;int main(){ string str1 = "hello world";//c++风格 cout << str1 << endl; char str2[] = "hello world";//c语言风格 cout << str2 << endl; return 0;}从黑

2022-01-09 18:33:12 287

原创 c语言大作业讲解(代码统计)

1.实现前的准备1.因为要储存学生的各种信息所以定义了一个结构体student,又因要储存很多学生,故定义结构体数组。还有要递归遍历文件夹定义的结构体struct student { char name[100]; int cnumber; int hangshu; int zongzifu; int ifshu; int forshu; int whileshu;};struct student tongji[1000];struct _finddata_t fileinfo;

2022-01-09 16:17:35 765

原创 动态创建一维数组和二维数组(c语言)

1.为什么要写这个周围有些同学会问我这个问题,如何动态创建数组,很多同学好像没有搞明白,而且最近在学c++,怕自己万一长时间不用忘了,所以记录一下2.代码实现+讲解#include <stdio.h>#include <stdlib.h>//包含malloc函数int main(){ //动态创建一维数组 int n; printf("请输入你想创建数组大小:"); scanf("%d", &n); int *array = malloc(siz

2022-01-09 16:05:01 460

原创 二分搜索算法实现(c语言)

1.二分搜索一种效率较高的搜索算法,但要求要排序的数组必须是有序的2.核心思想每次都从中间查找,若找到的值大于中间值,则往后找(原数组为升序数组),不然往前查找。3.动画演示4.代码实现5.总结...

2022-01-08 22:32:28 1352 1

原创 力扣 35.搜索插入位置(c语言)

1.题目描述2.思路讲解看到了时间复杂度要求,一股很浓的二分算法味儿就来了如果只是简单的搜索返回位置,那么题目就没啥意思了,唯一难点就是怎么返回要插入的位置插入位置肯定是前面小于目标值,后面大于目标值,用这个作为条件,返回我们位置当然这个算法没法保证第一个位置及0,和最后一个位置,所以我们需要去做一个特判3.代码展示int searchInsert(int* nums, int numsSize, int target){ int left=0; int r

2022-01-04 23:19:56 300

原创 力扣 26.删除有序数组中的重复项(c语言)

1.题目描述2.思路讲解典型的双指针题目,我们定义两个指针,一个不停移动,一个找到我们想要装入数组中的数,再移动(为了给下次装数做准备)3.代码实现int removeDuplicates(int* nums, int numsSize){ int left=1;//那个找到目标在移动的指针 if(numsSize==0) { return 0; } else { for(int right=1;right<n

2021-12-31 22:56:45 1557

原创 力扣 1995.统计特殊四元组(c语言)

1.题目描述2.思路讲解看到以后就暴力解了,一个四层循环,按着题目a<b<c<d,去遍历,只要满足相等条件,就加加ans就行。3.代码实现int countQuadruplets(int* nums, int numsSize){ int ans=0; for(int a=0;a<numsSize-3;a++) { for(int b=a+1;b<numsSize-2;b++) {

2021-12-29 23:09:44 561

原创 力扣 27.移除元素(c语言)

1.题目描述2.思路讲解这题我们使用双指针技巧,一个指针去移动遍历数组,发现不等于val的数,就把值赋给另一个指针(作为下标),同时该指针加一,在接着去遍历整个数组。遍历结束时,此时被动移动指针的值就是新数组的长度.3.代码展示int removeElement(int* nums, int numsSize, int val){ int left=0; for(int right=0;right<numsSize;right++) {.

2021-12-29 22:45:49 1130

原创 力扣 455.分发饼干(c语言)

1.题目描述2.思路讲解很经典的贪心问题,怎么贪心?我就想让最小的饼干尺寸满足孩子的饭量,这就是我们解决这个题目的思路3.代码展示int cmp(const void* a,const void* b)//调快排的函数{ return *(int*)a-*(int*)b;}int findContentChildren(int* g, int gSize, int* s, int sSize){ qsort(g,gSize,sizeof(g[0]),cmp).

2021-12-27 23:17:01 567

原创 力扣 20.有效的括号(c语言)

1.题目描述2.核心思想1、用到了栈的思想,实际上就是匹配一下吗2、图解:3.代码实现char maps(char c)//建立一个表,就是和栈顶元素去匹配,我是这样做的,你也可利用相减来做哦{ if(c==')') return '('; if(c=='}') return '{'; if(c==']') return '['; return 0;}bool isValid(char * s){ int l1=st..

2021-12-25 14:33:43 692

原创 C语言文件操作

一.文件类型和文件存取方式1.文件类型分为文本文件和二进制文件:1.文本文件是以字符编码的方式进行保存的。2.二进制文件将内存中的数据原封不动的进行保存,适用于非字符为主的数据。其实,所有的数据都可以算是二进制文件。二进制文件的优点在于存取速度快,占用空间小。2.文件存取方式顺序存取方式和随机存取方式:1.顺序存取就是从上往下,一笔一笔读取文件的内容。写入数据时,将数据附加在文件的末尾。这种存取方式常用于文本文件。2.随机存取方式多半以二进制文件为主。它会以一个完整的单位来进行数据的读取和写入,通常以结

2021-12-25 12:38:12 1123

原创 力扣 64.最小路径和(c语言)

1.题目描述2.思路讲解1.典型的dp问题,dp问题从来不能说简单,只能看自己当时有没有想到。2.图解:3.代码实现int min(int a,int b);int minPathSum(int** grid, int gridSize, int* gridColSize){ int rows=gridSize; int columns=gridColSize[0];//取行,才知道力扣是这样判断行的 for(i..

2021-12-25 10:11:58 1778

原创 选择排序总结(c语言)

1.选择排序图解2.选择排序时间复杂度分析时间复杂度为O(n^2),无最差情况3.思路讲解1.实际上就是我们每次假设一个最小的数,然后去遍历数组后面的数,如果发现比它小的(升序),我们就记录下位置,知道最后比完,我们去交换数字。2.图解4.代码实现#include <stdio.h>#include <stdlib.h>int main(){ int a[10]; for (int i = 0; i < 10; i++).

2021-12-23 17:44:38 647

原创 力扣 36.有效的数独(c语言)

1.题目描述2.思路讲解1.一开始看通过率这么高以为很好做,但发现并不是那么回事,对我来说难度挺大难点在怎么去想到用哈希表,以及如何分割开每个3x3的矩形,去判断是否有重复的数2.引用力扣https://leetcode-cn.com/problems/valid-sudoku/solution/36-jiu-an-zhao-cong-zuo-wang-you-cong-shang-wang-x/这位大神,对分割矩形块讲的很好,我也是借鉴了他的思路,最后给自己做一个总结3..

2021-12-23 17:23:49 302

原创 c语言直接调用qsort函数排序

1.前言因为做力扣有时候简单排序超时,手写快排又懒,所以做题可以直接使用qsort函数进行排序2.具体实现int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;//从小到大排序 //return *(int *b)-*(int *)a;由大到小排序}qosrt(a,10,sizeof(a[0]),cmp);//调用,a为数组名,10为数组大小,sizeof(a[0])为一个单位大小,cmp就是调函数3.就

2021-12-22 22:36:32 575

原创 力扣 21.合并两个有序链表(c语言)

1.题目描述2.思路讲解前言:我也不搞那些花里胡哨的,什么哑节点这样的名词,我相信你做这个题就一定开始学习链表了,创建链表大家肯定都会,不会你也不可能做这个题我们的思路实际上就是创建一个头节点,然后不停的去找list1和list2其中的值,想想插入节点的方法,这题就很轻松了。实际上打算画图演示给大家看,但发现实在太难画好看了,我相信做力扣的人,都i有能力自己去实现画图3.代码展示struct ListNode* mergeTwoLists(struct ListNode* l.

2021-12-22 20:33:59 376 1

原创 c语言链表的操作(前插法)

1.先定义一个结构体typedef struct link { int data; struct link* node;} link;2.创建链表link* creat(int nums){ link* head = 0;//创建头指针 for (int i = 0; i < nums; i++) { link* p = (link*)malloc(sizeof(link));//动态内存分配一下 p->data = rand() % 50 + 1;//赋值

2021-12-22 15:52:06 2039 1

原创 BF算法总结和力扣 28.实现strStr()(c语言)

一,BF1.BF算法BF算法即为暴力算法,是普通模式匹配算法2.BF算法的时间复杂度平均情况能到达O(m+n),最坏情况为O(m*n)3.BF算法核心思想是一种笨方法,即为一个一个去匹配每次的字符,当不符合时,移动指针重新回到下一个我们想搜索匹配的字符串4.BF算法实现#include <stdio.h>#include <string.h>char* mystrstrt(char* a, char* b);char* mystrstrt(ch

2021-12-20 22:55:24 295 1

原创 c语言顺序存储结构

1.顺序表的初始化1.先定义一个结构体#define Size 5typedef struct linklist { int* head;//这是个数组 int length;//数组长度}linklist;2.初始化一个顺序表linklist initlinklist()//我们返回整个顺序表,故要linklist定义{ linklist list;//建一个表 list.head = (int*)malloc(sizeof(int) * Size);//动态内存分配 Size=5

2021-12-20 20:27:56 500 1

原创 力扣 11.盛最多水的容器(c语言)

1.题目描述2.思路讲解1.这题我用到了双指针技巧,一个指针指向最左端,另一个指针指向最右段实际上也有暴力的做法,但能不能AC就不知道了2.题目第一个难点就在于怎么去确定最大面积。我们指针相减之差即为底,两个指针所指的值最小的就是高。然后每有一个新的面积,我们去比较,谁大留谁.3.题目第二个难点就在于怎么移动我们的指针,什么条件下移动谁,我通过手写来说明如何移动4.说这么多看看代码吧3.最终实现int min(int num1,int num2);int ..

2021-12-20 16:46:34 470 2

原创 冒泡排序总结(c语言)

1.冒泡排序图解2.手写过程3.核心思想我们每次比较两个值的大小,按我们想要的顺序,决定怎么去移动。4.代码实现1.准备工作#include <stdio.h>#include <stdlib.h>#include <time.h>#define n 10int main(){ int a[n]; for (int i = 0; i < n; i++) { a[i] = rand() % 50 + 1; ...

2021-12-19 22:34:34 372

原创 力扣 409.最长回文串(c语言)

1.题目描述2.思路讲解1.啥是回文串?就是正过来念和反过来念都相同,例如“abcdcba”和“abba”2.怎么解决这个问题呢?我们不需要去想太多,你看我们要想整个回文字符串,至少一个字母得出现两次吧(最基础),然后如果有个孤单的字符,插进去就完事了,但注意我们只能带一个孤独的字符玩,这个不难理解,你要是让两个孤独的字符进入了我们的回文串,那不就gg了吗。3.怎么统计一个英文字母出现了多少次呢?哈希表!!!只要出现一次我们就++,这样最后就能知道谁出现几次了.

2021-12-18 20:32:21 135

原创 洛谷刷题P1914 小书童——凯撒密码(c语言)

1.题目2.解题思路1.难点 :实际上就是如何做到z到a这个转化,以及类似情况2.解决方法:看了很多题解,发现这种思路最好例如:n=1,此时一个字符为z,当n为-25时是不是z会变成了a,其他情况类似这样怎么让n变成-25?n=n-26啊!有了这个思路这个题就解决了3.代码实现#include <stdio.h>#include <string.h>int main(){ int n; scanf("%d", &n);..

2021-12-17 23:30:32 2727 1

原创 c语言高精度算法(加法)

1.为什么使用高精度算法啊?在c语言中,int类型取值范围为(-2^31 ~ 2^31-1),而long long类型取值范围也才仅有(-2^63~ 2^63-1),在处理一些较大的数据时,显然仅靠这些类型,是完全无法处理的2.高精度加法的核心思想(图解)3.高精度算法的核心思想 其实就是用数组来处理高精度问题将很大的数字用字符数组存储,再将其中一个个的数字变为整数存入整形数组中4.准备工作 1.要输入东西 ...

2021-12-17 22:58:34 7151 9

原创 RK算法总结(简易版不考虑溢出)

1.RK算法的由来RK算法全称Rabin-Karp,是由该算法的2位发明者Rabin和Karp的名字组合而成。2.RK算法的核心思想该算法的核心思想就是通过比较2个字符串的hashcode来判断是否包含对方。3.RK算法的时间复杂度平均情况为O(n),极端情况下为O(n*m)4.思路讲解* a b c d .... x y z0 1 2 3 4 .... 24 25 261.我现在创建了一个27进制的数,*为0,a为1,b为2,让*为0目的是不会出现两个.

2021-12-15 15:30:24 3727

原创 快速排序的总结(c语言)

快速排序的由来1.快速排序是对冒泡排序算法的改进2.快速排序是C.A.R.Hoare在1960年提出快速排序的优越性及弊端1.相较于冒泡排序以及快速排序的时间复杂度O(n2),快速排序复杂度为O(nlogn)(平均情况)2.最坏的情况是,每次所选的中间数是当前序列中的最大或最小元素,这使得每次划分所得的子表中一个为空表,另一子表的长度为原表的长度-1。这样,长度为n的数据表的快速排序需要经过n趟划分,使得整个排序算法的时间复杂度为O(n2)。(引用百度百科)代码实现1.准备部分.

2021-12-14 22:30:36 867

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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