- 博客(11)
- 收藏
- 关注
原创 力扣28题记录C语言rk算法(滚动hash)
记录的都是做题时的解法这是力扣题,实现strStr(),有很多方法,C语言自带的strstr()函数,BF(暴力匹配),KMP,RK,来记录下RK 。// rk#include<stdio.h>#include<string.h>int rk(char *s, char *pa){ unsigned long skey = 0, pakey = 0, base = 1; int slen = strlen(s); int palen = strlen(pa);
2022-01-01 14:18:05
703
1
原创 记录基数排序C代码
#include<stdio.h>int maxbit(int *nums, int numsSize){ // maxbit 函数求最大值的位数 int maxdate = nums[0]; for(int i = 1; i < numsSize; i++){ if(nums[i] > maxdate){ maxdate = nums[i]; } } int bit = 0; while(maxdate > 0){ bit++; max.
2021-12-25 10:54:25
359
原创 260. 只出现一次的数字 III
typedef struct Node{ int appear_num; //用一个结构体来表示结点,这个结点由一个数val和这个数出现次数appear_num组成 int val;}Hash;int* singleNumber(int* nums, int numsSize, int* returnSize){ *returnSize=2; int *ans=malloc(*returnSize * sizeof(int)); memset(ans,0,*.
2021-12-09 16:41:30
99
原创 排序之插入排序
给定一个数组nums[],将其按一定顺序顺序排序;如果是从小到大排序;举个例子nums[7,8,3,5,0,2,4,6,3],插入排序一看就知道是插入,怎么插入呢?第一个可以不管,可以从第二个元素开始遍历,8>7,这两个是已经有序的,那就从第三个开始。3<8,所以先把3跟8调换位置,之后排序为[7,3,8,5,0,2,4,6,3],3<7,再把3跟7调换,得到数组[7,3,8,5,0,2,4,6,3]。后面依次遍历。void insertsort(int *nums, int n
2021-09-17 16:35:23
99
1
原创 力扣 1894. 找到需要补充粉笔的学生编号
给你一个长度为 n且下标从 0开始的整数数组chalk和一个整数k。一开始粉笔盒里总共有k支粉笔。当编号为i的学生回答问题时,他会消耗 chalk[i]支粉笔。如果剩余粉笔数量 严格小于chalk[i],那么学生 i需要 补充粉笔解题思路:老师是重复询问的,每个同学都有可能重复很多变,但是最后一次一定会在一个同学上粉笔不够,可以先排除前面重复多次的,先求和sum,用k%sum得到余数,再for一次就可以了。循环时,用余数减去同学需要的粉笔数,当小于0的时候就直接输出下标。...
2021-09-10 14:25:30
72
原创 力扣470,用Rand7()实现Rand10()
这是我昨晚这道题自己的一点理解,大佬勿喷!!!第一种方法;先理解二进制如何解决,一开始是用二进制rand2()做的。要生成1-10,要4位二进制数,四位二进制最大是1111表是15,来表示1-10是完全够用的,跟数字电路里的译码器一样。代码如下;int rand2(){return (rand()%10)>4;}int rand10() {while(true){int a=rand2()%2;int b=rand2()%2;int c=rand2()%2;int d=r.
2021-09-08 17:22:45
90
原创 C语言实现数组的去重 leetcode 26题
// 快慢指针解决去重int delete_repeat(*nums numsSize){ int fast=1; int slow=1; // 因为nums[0]最多跟nums[1]重复,重第二个元素开始判断 while(fast<numsSize){ if(nums[fast] != nums[fast-1]){ nums[slow] = nums[fast]; slow++ .
2021-07-27 17:21:47
115
原创 leetcode 34 C语言
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。思路:用双指针left,right,左右遍历,如果不等于target,left左移,right右移,最后直接返回left和rightint* searchRange(int* nums, int numsSize, int target, int* returnSize){ int *res = (int *)m.
2021-07-27 10:54:55
255
原创 顺序栈 跟顺序表类似,比顺序表要简单一些,顺序栈是被限制的顺序表 只允许栈顶取出和插入 要简单很多
#define StackInintSize 100 //初始栈的大小#define StackCrement 10 // 后面进栈的时候可能栈大小不够 这是预设的增量typedef struct SqStack{ //栈结构体 int *base; int top; int stacksize;}S;void InitSqStack(SqStack &S){ S.base=(int *)malloc(StackInintSize*size.
2021-07-25 11:26:22
348
原创 记录学习单链表头插法 并解决leetcode反转链表 206
void Create_Head(LinkList &L,int n){ L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; LinkList p; for(int i=0;i<n;i++){ p=(LinkList)malloc(sizeof(LNode)); scanf(&p->data); p->next=L->next; .
2021-07-24 12:06:58
173
1
原创 2021-07-22
记录一下学习数据结构,下面是顺序表的实现,包括查找,删除,插入,判空,取元素#define ListInitsize 100#define ListIncrement 10typedef struct{Sqlist *base;int length;int listsize;}Sqlist; // 定义一个 Sqlist 结构体类型 有结构体起始地址base// 长度length 存储长度Sqlist L;// 初始化定义的顺序表L的结构void initsqlis
2021-07-22 13:46:26
177
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人