自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode 125 验证回文字符串 C语言 & python

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false代码bool isPalindrome(char * s){ if (NULL == s) { return false; } int str_

2021-05-20 22:41:22 204 1

原创 LeetCode 1两数之和 C语言 哈希表O(1)实现

struct hashTable { int key; /*数组元素值*/ int val; /*数组元素对应下标*/ UT_hash_handle hh;};/*Step1:创建哈希表*/struct hashTable* Myhashtable;struct hashTable * find( int ikey){ struct hashTable* tmp; HASH_FIND_INT(Myhashtable, &ikey, tm...

2020-11-01 21:06:10 1045 3

原创 LeetCode 49 字母异位词分组 C语言 哈希表实现

代码来源https://leetcode-cn.com/problems/group-anagrams/solution/cyu-yan-sui-ran-xie-qi-lai-hen-lei-dan-shi-dui-ha-/#define STR_SIZE 100typedef struct Node{ char str[STR_SIZE]; // key为字符串 int row; // value为结果所在的行 struct Node * ne.

2020-10-27 22:59:36 267

原创 LeetCode 242 有效的字母异位词 C语言实现 哈希O(N) 排序O(N log N)

bool isAnagram(char * s, char * t){ int a_s[256] = {0}; int s_len = strlen(s), t_len = strlen(t); int i = 0; for(i = 0; i < s_len; i++){ a_s[s[i]]++; } for(i = 0; i < t_len; i++){ a_s[t[i]]--; } for(.

2020-10-02 10:51:57 161

原创 LeetCode 239 滑动窗口最大值 C语言 单调递减队列 实现 O(N)

int* maxSlidingWindow(int* nums, int numsSize, int k, int* returnSize){ *returnSize = numsSize - k + 1; int *res = (int *) malloc( (*returnSize) * sizeof(int) ); int dequeue[numsSize] ; /*单调递减队列*/ int head =0, tail=0; /*head为能使用的队列的队头,.

2020-09-20 20:37:24 364

原创 LeetCode 84 柱状图中最大矩形 栈 O(N) 和 暴力O(N^2)

栈O(N)解法如下:int largestRectangleArea(int* heights, int heightsSize){ int top = 0; int max_area = 0; int *stack_height = (int *) malloc(sizeof(int) * (heightsSize+2)); int *stack_index = (int *) malloc(sizeof(int) * (heightsSize+2)); int i =

2020-09-19 22:18:15 222

原创 LeetCode 155 最小栈 C语言实现 O(N)

typedef struct { int itop; /*数组元素个数*/ int min_num; /*当前最小的数值*/ int *data_buf_p; /*存储数组元素的栈*/ int *min_data_buf_p; /*存储数组当前最小值得栈*/} MinStack;#define MAXSIZE 1000/** initialize your data structure here. */MinStack* minStackCreate() { .

2020-09-19 13:02:32 134

原创 LeetCode 20 括号匹配 C语言 Python O(N)

bool isValid(char * s){ int str_len = strlen(s); if(str_len % 2 == 1){ return false; } char str_stack[str_len]; int top = 0, i = 0; for(i = 0; i < str_len; i++){ /*如果是左括号压栈*/ if(s[i] == '{'){ .

2020-09-15 23:33:39 143

原创 LeetCode 15 3个数之和 C语言 Python O(N^2)实现

int CompareIncrease(void* a, void* b){ return ( *(int *)a - *(int*)b); }int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes){ *returnSize = 0; if(0 == numsSize){ return NULL; } int cur = 0; /*相当.

2020-09-13 21:33:04 140

原创 LeetCOde 70 爬楼梯 O(N) C语言实现

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶...

2020-09-06 19:49:39 169

原创 LeetCode 11 盛水最多的容器 O(N) C语言实现 Python实现

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49.

2020-09-02 23:26:00 164

原创 LeetCode 283 移动零 O(N) C语言 & Python

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数...

2020-09-01 22:43:59 207

原创 makefile简单梳理总结总结

1、使用makefile的原因是因为,当工程很大的时候,有很多文件,这些文件也有可能很分散,若直接用gcc编译则拼写gcc命令很长,很麻烦,很容易出错,所以借助makefile工具将所有编译命令写到文件中帮助gcc编译,避免出错,方便管理。2、makefile的命名只有两种方式makefile和Makefile3、规则中的三要素:目标,依赖,命令。目标:依赖文件 ...

2019-11-17 22:32:16 226 2

原创 调整log的毫秒显示格式

原来的log显示代码修改后的log显示,由于目前只关注时间格式,目前的代码有待完善。#include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc, char *argv[]){ FILE * fp_r, *fp_w; int len;...

2019-09-13 23:09:18 759

原创 进程间通信的7种方式:共享文件、管道、消息队列、共享内存、套接字(附测试代码)

Linux进程间通信几种方式总结面试过程中Linux进程间通信作为基础知识经常会被问道,今天就在这里总结一下。Linux进程间通信常用的有7种,分别是1共享文件、2匿名管道pipe、3有名管道fifo、4消息队列、5共享内存、6信号量、7套接字Socket。现在我们就每种的使用方式和特点简单总结一下。详细代码 https://github.com/Kunpeng1989/IPC 也可关注...

2019-08-04 20:14:27 2755

原创 七大排序算法对比冒泡、选择、插入、希尔、归并、快排、堆排(附测试代码)

排序算法作为程序员必备基础技能,在工作和面试中经常会拿来使用或者扩展。今天就针对常使用的冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序进行简单的分析总结。下图是7种排序算法对10000个随机数的排序时间消耗对比。完整测试代码详见:https://github.com/Kunpeng1989/Sort公众平台见二维码1、冒泡排序:冒泡排序的实现原理和它的名字相...

2019-07-07 21:07:01 1352

原创 Linux 网络编程常用函数总结

in_addr_t inet_addr(const char* strptr); inet_addr函数可以转化字符串,主要用来将一个十进制的数转化为二进制的数,用途多于ipv4的IP转化。返回值:如果若字符串有效则正确执行将返回一个无符号长整数型数(这32位无符号长整型是二进制网络字节序的IPV4地址)。如果传入的字符串不是一个合法的IP地址,将返回INA...

2019-06-09 21:58:22 225

转载 C语言实现简单的服务器端和客户端TCP的SOCKET通信(封装错误处理函数),实现小写字母转为大写字母(2)

封装的函数和库函数名字唯一差别就是封装的函数首字母是大写,如库函数socket函数封装的是Socket,这样是为了方便在vi中即便光标在Socket上使用shift + K也能查询到socket函数/****************makefile*****************/src = $(wildcard *.c)obj = $(patsubst %.c, %.o, $(src...

2019-04-29 22:00:42 366 1

原创 C语言实现简单的服务器端和客户端TCP的SOCKET通信,实现小写字母转为大写字母

注意:开启程序的时候应该先开启server程序,再开启client程序。关闭程序的时候应该先关闭client程序,再关闭server程序。/*****************************************服务器端************************************/#include <stdio.h>#include <un...

2019-04-27 21:52:01 2529 1

原创 在#if #else条件编译时候用枚举变量做条件对比易出错,建议#if #else条件编译结合宏#define使用

使用#if(条件1) #else 条件编译的时候,当#if(条件1)中的条件对比内容是枚举成员的时候会出现无论什么情况,#if后边的条件都是真的情况。这可能是由于#if条件起作用是在预编译阶段起作用,而预编译阶段时候枚举变量是占用同一块内存,导致预编译的判断#if条件不同枚举的成员的值相等,所以#if条件恒成立,最终永远进入不到#else分支下。下面举了两个例子,分别说明错误原因,及修改...

2019-04-19 22:24:49 2537

原创 VS2017下DILL动态库的生成和使用

1、新建——项目——Windows桌面向导2、应用程序类型选择动态链接库(.dill),并勾选空项目步骤3:添加.h头文件和.c函数实现文件, 其中头文件中每个函数的声明墙边都要加上一句__declspec(dllexport)其中头文件内容如下#pragma once//兼容C++编译器#ifdef __cplusplusextern "C"{#endif...

2019-03-19 15:08:33 863

转载 哈希表的应用实例 C语言实现

转载:https://blog.csdn.net/zouchunlaigo1988/article/details/7163920 但原文代码有瑕疵,略作修改。但是仍有不足之处,如姓名fuzongkai和姓名luzhijian及姓名xujinfeng的关键字均为974.#include&lt;stdio.h&gt;#define NAME_NO 30#define HASH_LE...

2019-03-03 18:39:30 1965 1

原创 vim或vi关闭的时候提示E137 Viminfo file is not writable /home/用户名/.viminfo

出现这种情况原因是 /home/用户名/.viminfo的文件没有写权限。1、我们执行如下命令 cd /home/登录用户名2、然后ls -alh 可以发现 .viminfo隐藏文件只有读权限没有写权限,3、我们在控制条输入 chmod 600 .viminfo 给 .viminfo隐藏文件增加写权限问题解决。...

2019-02-20 22:46:10 3431 1

原创 C语言实现读写ini配置文件代码示例

/******************main.c*******************/#define _CRT_SECIRE_NO_WARNINGS#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;string.h&gt;#include"CfgFile.h"void menu(){    print...

2019-01-31 11:02:12 3348 1

原创 字典作为作为函数不定长参数时候字典的key值不用加引号

参考博客 https://blog.csdn.net/festony/article/details/8247951def myclass(classname,*classcharacter,**classmate):    sumage = 0    print('班级名称:',classname)    print('班级特色:',*classcharacter)      pr...

2018-10-27 18:53:28 2091

原创 C编程基础day14

面向对象编程: 封装、继承、多态。1、封装:C++的封装相对于C语言的结构体里面除了变量外还有函数。2、继承:利用以前写过的内容。3、多态:多种形态,调用同一个函数得到不同的结果。 #include&lt;stdio.h&gt;struct Test{    int a;    void setA(int x) //C++中类中可以有函数    {   ...

2018-09-02 16:40:39 219

原创 C编程基础day13

格式化读取提取用sscanf函数。格式化输入用ssprintf函数。 fprintf函数将内容写到文件中,fprintf(fp,"%d\n",num);fscanf函数从文件中读取内容, fscanf(fp,"%d\n",&amp;num);  //如果读到的格式不是“%d\n”的格式时候会出错,提前结束读取。 研究以下代码,在fp文件最后有多个换行符的时候为什么没有继续打...

2018-08-19 20:47:36 178

原创 txt文件内的多个数字排序, fprintf, fscanf,

#include&lt;stdio.h&gt;#include&lt;time.h&gt;#include&lt;stdlib.h&gt;#define MAX 500void write_file(){    int index = 0, num = 0;    FILE *fp;    char buf[1024];    fp = fopen("1.txt","w"); ...

2018-08-06 19:31:27 749

原创 在txt文件中实现四则运算, fgets, fputs, sprintf, sscanf, feof, strcat, strlen

#include&lt;stdio.h&gt;#include&lt;time.h&gt;#include&lt;stdlib.h&gt;#include&lt;string.h&gt;#define MAX 500void write_file(){    FILE *fp;        fp = fopen("1.txt","w");    if(NULL == fp  ...

2018-08-06 18:35:53 311

原创 在一个txt文件写入500个数字,并读取出来,sprintf sscanf fputs fgets feof

#include&lt;stdio.h&gt;#include&lt;time.h&gt;#include&lt;stdlib.h&gt;#define MAX 500void write_file(){    int index = 0, num = 0;    FILE *fp;    char buf[1024];    fp = fopen("1.txt","w"); ...

2018-08-06 18:00:31 662

原创 C编程基础day12

\r 是每次输出都在最左端。fflush(stdout); 因为打印的时候不会立即放在屏幕,而是先放在内存,再放到缓存区等到缓存区满了的时候才放在屏幕。调用这个函数后即便缓存区没满也会将printf的内容显示到屏幕上。 使用缓存区是为了提高效率,避免太频繁地从内存往屏幕写东西,而是先把要显示的东西存到缓存区,等攒够了再给屏幕。 读取缓存区类似。  文件指针:FILE *fp;  /...

2018-08-05 22:04:31 229

原创 C编程基础day11

1、struct 是关键字, 2、例子中struct 和Student合起来才是结构体类型3、结构体内部定义的变量不能直接赋值。4、结构体只是一个类型,没有定义变量前没有分配空间,没有空间就不能赋值。struct  Student{    int age;    char name[50];    int score;}; //必须有分号。  定...

2018-07-29 20:17:46 234

原创 C编程基础day10

char * p[]和char **p只有当做函数参数时是等价的,其他情况不等价。一、不等价的情况:char *p2[]={"abc","edf", "ghi"}; //这里p2是数组char * *p2={"abc","edf", "ghi"}; //err,因为指针p2是char * *型, p2指向的是char *型。这里p2是指针。 char *temp;c

2018-07-22 22:03:03 356

原创 C编程基础day09

指针数组:的实质是数组,也就是指针的数组,每个元素都是指针。数组指针:的实质是指针,就是指向数组的指针。 指针数组:int a[5]={1,2,3,4,5};int * p[5];// 指针数组:的实质是数组,也就是指针的数组,每个元素都是指针。[]的优先级比较高。int n = sizeof(p)/sizeof(p[0]);for(int i=0; i&lt;n; i...

2018-07-15 21:06:25 332

原创 C编程基础day08

return 函数在主函数中return结束程序。在其他函数中return结束该函数,但程序仍运行。exit 在任何函数中执行都会结束程序,也就是结束进程。如果函数不是写在main函数前边,那么需要在函数被调用的前边某个地方声明。一个函数可以声明多次,但只能定义一次,声明的变量名称和定义的变量名称可以不一样。甚至声明时候可以只写形参类型,不写形参名字。分文件编程: 按功能来分,不同的功能写在不同的...

2018-07-15 10:49:11 189

原创 C编程基础day07

char buf[10], a[10];scanf (“%s \n”,buf);  scanf 函数碰到空格停止,只取第一个空格前的内容,第一个空格后边若有内容会被下一个scanf自动取走, 另外scanf不做越界检查(所以微软不让用)char buf[10];gets(buf);   gets函数碰到换行符或文件结束符停止,允许有空格, 另外gets也不做越界检查,现在都不用这个函数了。最安全的...

2018-07-15 10:48:29 222

原创 C编程基础day06

char buf[10], a[10];scanf (“%s \n”,buf);  scanf 函数碰到空格停止,只取第一个空格前的内容,第一个空格后边若有内容会被下一个scanf自动取走, 另外scanf不做越界检查(所以微软不让用)char buf[10];gets(buf);   gets函数碰到换行符或文件结束符停止,允许有空格, 另外gets也不做越界检查,现在都不用这个函数了。最安全的...

2018-07-13 10:06:06 136

原创 C编程基础day05

字符常量'a'字符串常量“a”,字符串常量以\0结尾输出打印%p 以16进制形式输出指针int a= 1; printf("&amp;a=%p\n",&amp;a); /*打印a的地址*/打印%时候需要写两个%%prinf("%%\n");%5d输出5个字符宽度,不足5个字符话用空字符填充,默认右对齐printf("a=%5d",a); %05d输出5个字符宽度,不足5个字符话用0字符填充,默认右...

2018-07-05 21:32:58 218

原创 C编程基础day04

数据类型是为了告诉编译器 这个数据占用多大内存空间。常量指在程序运行过程中其值不允许改变的量,常量一般出现在表达式或赋值语句中。整型常量 2,-3、0;实型常量 2.5, 3.14;字符常量: ‘a’,'b';字符串常量:“abcd”,“123456”;变量指在程序运行过程中其值可以改变,变量使用前必须先定义,变量定义时必须说明数据类型。变量名字 只能是字母、数字、下划线组成。 名字第一个字符必须...

2018-07-03 20:43:01 215

转载 Linux(Ubuntu)新建用户只有一个$问题

Linux(Ubuntu)新建用户只有一个$问题 版本:linux ubuntu12.04 Server问题:1.今天新建一个用户:useradd ***2.然后在home目录下新建了跟账户的文件夹最后登录的时候就只显示一个$,不像一般的[***@***~]. 而且一些脚本也不能运行。目录也没标注颜色。 搞了老半天没搞定。最后在http://www.2cto.com/os/201301/18478...

2018-06-30 21:18:54 2659 1

IEEE1609.1协议

IEEE1609系列标准主要针对高层协议,满足车对车、车对路的无线通信需求。IEEE1609.1标准主要负责资源管理;IEEE1609

2015-02-02

空空如也

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

TA关注的人

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