![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C_programs
Frank.Ren
这个作者很懒,什么都没留下…
展开
-
只出现一次的数字 leetcode 刷题篇
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?int singleNumber(int* nums, int numsSize){ int n = 0; while(numsSize--){ n^=nums[numsSize]; } return n;}...原创 2022-03-20 14:48:22 · 227 阅读 · 1 评论 -
验证回文串 双指针 leetcode 刷题篇
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。整体思路还是清晰的,就是两头指针不断比较,并跳过无效的字符;就是跳过时的判断需要思考下,漏写了可不好;bool isPalindrome(char* s) { if(s==NULL){ return true; } int r = strlen(s) - 1; int l = 0; whil...原创 2022-03-18 15:05:56 · 935 阅读 · 1 评论 -
二叉树 路径总和 树状链表 leetcode 刷题篇
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。bool hasPathSum(struct TreeNode* root, int targetSum){ if(root==NULL){ return false; } if(r.原创 2022-03-18 13:34:04 · 377 阅读 · 1 评论 -
删除排序链表中的重复元素 leetcode 刷题篇
给定一个已排序的链表的头head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteDuplicates(struct ListNode* head){ if(head==N...原创 2022-03-18 13:10:11 · 205 阅读 · 1 评论 -
合并两个有序数组 leetcode 刷题篇
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。int compare (cons.原创 2022-03-18 12:55:56 · 208 阅读 · 1 评论 -
爬楼梯 leetcode 刷题篇 递归or动态规划
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?用递归时间复杂度太高了,还是动态规划方便其实动态规划就是指下一次结果用之前的结果得出,这样就可以大大减少复杂度;而递归则是将每一种可能都运算到底,这样会重复计算好多次相同的数据,运算时间自然就长了;// int fib(int n){// if(n<2){// return 1;// }// return fi...原创 2022-03-18 11:07:51 · 349 阅读 · 1 评论 -
x 的平方根 leetcode 刷题篇
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。暴力算法大家都会,这题中一个地方是要避免数据溢出,可以做大小判断,也可以像我一样,直接除掉,更加方便一点.int mySqrt(int x) { int left = 1, right = x / 2 + 1; while (left &l.原创 2022-03-18 10:45:57 · 202 阅读 · 1 评论 -
二进制求和 leetcode 刷题篇
二进制求和 leetcode 刷题篇原创 2022-03-18 10:29:07 · 192 阅读 · 1 评论 -
leetcode dailyWork 最后一个单词的长度
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。int lengthOfLastWord(char * s){ int i = strlen(s)-1; while(s[i]==' '){ i--; } int start = i; while(i>=0&&s[i]!=' '){ i原创 2022-03-17 11:26:21 · 65 阅读 · 1 评论 -
leetcode dailyWork - 数组串联
给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans ,数组下标 从 0 开始计数 ,对于所有 0 <= i < n 的 i ,满足下述所有要求:ans[i] == nums[i]ans[i + n] == nums[i]具体而言,ans 由两个 nums 数组 串联 形成。返回数组 ans 。int* getConcatenation(int* nums, int numsSize, int* returnSize){ ...原创 2022-03-17 11:14:10 · 104 阅读 · 1 评论 -
leetcode 刷题篇 多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。简单粗暴.....效率也不错.int comp(const void * a, const void * b){ return *(int*)a - *(int*)b;}int majorityElement(int* nums, int numsSize){ qsort(nums,numsSiz原创 2022-03-15 13:26:39 · 469 阅读 · 1 评论 -
最大子数组和 leetcode 刷题篇 动态规划
给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。int maxi(int a, int b){ return a>b?a:b;}int maxSubArray(int* nums, int numsSize){ int max = nums[0]; int pre = 0; for(int i=0;i<numsSize;i++){ p...原创 2022-03-15 12:04:37 · 1504 阅读 · 1 评论 -
四数之和 leetcode 刷题篇 动态规划题(进阶版)
给你一个由 n 个整数组成的数组nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组[nums[a], nums[b], nums[c], nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d< na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序 返回答案 。部分代码如下:int ...原创 2022-03-10 11:44:25 · 87 阅读 · 1 评论 -
最长回文子串 leetcode 刷题篇
给你一个字符串s,找到s中最长的回文子串。完整代码已上传至github,放在dailyWork_2022_2_9文件夹中:GitHub - frankRenlf/c_dailyWorkhttps://github.com/frankRenlf/c_dailyWork.git部分代码如下:int decided(char* s, int l, int r){ while (l >= 0 && r < strlen(s) && s[...原创 2022-03-07 18:06:15 · 345 阅读 · 1 评论 -
七进制数 leetcode 刷题篇
给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。完整代码已上传至github,放在dailyWork_2022_2_9文件夹中:GitHub - frankRenlf/c_dailyWorkContribute to frankRenlf/c_dailyWork development by creating an account on GitHub.https://github.com/frankRenlf/c_dailyWork.git部分代码如下:char* co..原创 2022-03-07 16:51:10 · 151 阅读 · 1 评论 -
C语言 leetcode 刷题篇 适合打劫银行的日子(类动态规划题)
你和一群强盗准备打劫银行。给你一个下标从 0开始的整数数组security,其中security[i]是第 i天执勤警卫的数量。日子从 0开始编号。同时给你一个整数time。如果第 i天满足以下所有条件,我们称它为一个适合打劫银行的日子:第 i天前和后都分别至少有 time天。第 i天前连续 time天警卫数目都是非递增的。第 i天后连续 time天警卫数目都是非递减的。更正式的,第 i 天是一个合适打劫银行的日子当且仅当:security[i - time] ...原创 2022-03-06 11:47:36 · 456 阅读 · 1 评论 -
C语言 leetcode 刷题篇 最接近的三数之和
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。代码已上传至github:放在dailyWork_2022_2_9文件夹中GitHub - frankRenlf/c_dailyWorkContribute to frankRenlf/c_dailyWork development by creating an account on GitHub原创 2022-03-05 11:35:17 · 436 阅读 · 1 评论 -
C语言 leetcode 刷题篇 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。char * longestCommonPrefix(char ** strs, int strsSize){ if(strsSize == 0) //输入不存在公共前缀 return ""; for(int i=0; i < strlen(strs[0]); i++){ //纵向遍历字符串数组 ..原创 2022-03-05 09:52:09 · 502 阅读 · 1 评论 -
C语言 整数各位相加 leetcode刷题篇 两种思路 (数的数根(digita root)就是它对9的余数?)
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。第一种原理很简单,就是不断计算每个的合,然后判断是否>10;>10,就转换一下num=sum和sum=0,继续循环;int addDigits(int num) { int sum = 0; while (num) { sum += num % 10; num /= 10; if (sum < 10 && num == 0) { bre...原创 2022-03-03 18:03:05 · 393 阅读 · 3 评论 -
C语言 寻找两个正序数组的中位数 leetcode刷题篇
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。给了两种思路,一种合成一个list,排序,然后选出中位数就行;还有一中,不创造新list,存于两个变量中,不断比较,比较(nums1Size+nums2Size)/2次.int compare_int(const void* a, const void* b){ return (*(int*)a -..原创 2022-03-03 15:31:18 · 415 阅读 · 1 评论 -
C语言 有效的括号 leetcode刷题篇
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。bool isValid(char * s){ int n = strlen(s); //获取括号个数 if(n % 2 == 1) /...原创 2022-03-03 13:11:31 · 226 阅读 · 1 评论 -
C语言 简单模拟 strstr leetcode刷题篇
实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符int str.原创 2022-03-03 11:57:23 · 154 阅读 · 1 评论 -
C语言 leetcode刷题篇 删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成..原创 2022-03-01 15:21:11 · 331 阅读 · 1 评论 -
C语言 牛客网 字符串空格替代
int main(){ char* p = (char*)malloc(sizeof(char) * 100); //char p[100]; gets(p); //scanf("%s",p); assert(p); int l = strlen(p) - 1; int tmp = l; int lt = l; int max = 0; while (tmp) { if (p[tmp] == ' ') { l += 2; lt = l; max = lt;.原创 2022-03-01 15:12:51 · 317 阅读 · 1 评论 -
C语言 变成斐波那契数最少需要几步
完整代码已传至github:int maxi(int a, int b, int n){ if (n - a > b - n) { return b - n; } return n - a; }int main(){ int n = 0; scanf("%d", &n); int p1 = 0; int p2 = 1; int tmp = 0; int i = 0; while (n > p2) { tmp = p2; p2 = p.原创 2022-03-01 15:11:53 · 218 阅读 · 1 评论 -
C语言 三数之和 顺便讲讲二维数组 动态内存分配
今天碰到需要给二维数组分配动态内存的题目,理了理.给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。代码放在这里 :int compare(const void* e1, const void* e2){ return *(int*)e1 - *(int*)e2;}int** threeSum(int* nums...原创 2022-02-19 17:10:38 · 794 阅读 · 1 评论 -
C语言 实现 mail list (2) 通讯录 进阶版(数据储存于txt)
部分代码如下:#pragma once#include<stdio.h>#include<assert.h>#include<stdlib.h>#include<string.h>#include<stddef.h>#include<errno.h>//#define MAX 1000#define NAME_MAX 20#define SEX_MAX 5#define ADDR_MAX 30#defi..原创 2022-02-18 22:10:21 · 452 阅读 · 1 评论 -
c语言 leetcode 刷题篇 整数转罗马数字
例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为IX。这个特殊的规则只适用于以下六种情况:I可以放在V(5) 和X(10) 的左边,来表示 4 和 9。X可以放在...原创 2022-02-17 17:18:52 · 568 阅读 · 1 评论 -
C语言 leetcode 刷题篇 盛最多水的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。部分代码如下:int maxArea(int* height, int heightSize) { int l = 0, r = heightSize - 1; int max = 0; while (l < r) ...原创 2022-02-17 16:51:28 · 280 阅读 · 1 评论 -
C语言 回文数 (leetcode 刷题篇)
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。部分代码如下:int isPalindrome(int x) { char a[100]; sprintf(a, "%d", x);//把整数x,转化为字符串存入a中 int left = 0, right = 0;//从数组头尾两边向内判断嘛,定义两个左右索引 r...原创 2022-02-15 19:34:23 · 271 阅读 · 1 评论 -
OS C语言 模拟linux 指令
部分代码如下const char* COMMAND_INFO = "info";const char* COMMAND_MYGREP = "mygrep";const char* COMMAND_EXIT = "exit";const char* COMMAND_EX = "ex";const char* COMMAND_HELP = "help";const char* COMMAND_CD = "cd";const char* COMMAND_IN = "<";const...原创 2022-02-12 20:33:46 · 1067 阅读 · 1 评论 -
C语言 ubuntu中测试 模拟内存函数 malloc等
已传至github,可下载测试:https://github.com/frankRenlf/os.githttps://github.com/frankRenlf/os.git在ubuntu的linux中运行测试成功,以下是部分代码// void split(struct block *bestFit, size_t size)// {// struct block *new = (void *)((void *)bestFit + sizeof(struct ..原创 2022-02-12 19:01:58 · 294 阅读 · 1 评论 -
C语言 实现 KMP算法
已传入github,可下载,想测试对应函数,调用传参即可,记得注释掉之前的主函数文件名为2022_1_19,因为是是那天写的GitHub - frankRenlf/c_programshttps://github.com/frankRenlf/c_programs.git部分代码如下:我使用了两种方法写KMP算法,前一种参考了网上其他人的写法,不过重点在后面mykmp函数上,个人认为用动态内存的方法更好,节省空间,并优化了计算速度.其中nextval可以节省大量运行时间,...原创 2022-02-12 18:12:41 · 479 阅读 · 1 评论 -
基于c语言实现的初级mail list(1) 通讯录,后续会有改进
https://github.com/frankRenlf/c_mailList_primary.git增删改查排序均已实现,后续将加入将mail list写入txt或者数据库来保存,进行功能完善原创 2022-02-08 23:07:34 · 814 阅读 · 1 评论 -
c语言 寻找奇数 and 寻找峰值
两个代码都分装成函数,想测试直接调用即可.代码已放入链接原创 2022-02-09 12:01:01 · 423 阅读 · 1 评论 -
c语言 找对数(非暴力算法)
暴力求解:时间复杂度太高了。数比较大时,很耗费时间。只要算法学好,学什么语言都快step1: 在k==0,count=n*n;当k>0,step2: 在y的整数倍区间内,x符合条件的数量就是 (n / y) * (y - k)个n / y 表示有多少个完整的 0 ~ y区间, y - k 表示有每个区间内有多少个符合条件的数字 step3: n % y 就是多出完整区间部分的数字个数,其中k以下的不用考虑,则符合条件的是 n % y - (k-...原创 2022-02-09 22:04:06 · 581 阅读 · 1 评论 -
c语言 一步截取字符串
GitHub - frankRenlf/c_dailyWork只需加入'\0'再输出字符串即可#include<stdio.h>void test4(){ char arr[100]; int k = 0; while (scanf("%s", arr) != EOF) { scanf("%d", &k); arr[k] = '\0'; printf("%s\n", arr); }...原创 2022-02-09 22:15:28 · 896 阅读 · 1 评论 -
C语言 模拟实现 对字符串操作函数 包括strlen,strcop,strcat,strcmp,strncpy,strstr,memcpy,memmove
已传入github,可下载,想测试对应函数,调用传参即可,记得注释掉之前的主函数文件名为2022_1_19,因为是是那天写的https://github.com/frankRenlf/c_programs.githttps://github.com/frankRenlf/c_programs.git部分函数代码我也放这儿了,int my_strlen(const char* str){ assert(str); int count = 0; while (*str !.原创 2022-02-12 17:48:48 · 224 阅读 · 1 评论 -
c语言 qsort 改进篇
已上传至github, 放在2021_11_23里面,因为是那天写的,就起这么个名字了GitHub - frankRenlf/c_programsContribute to frankRenlf/c_programs development by creating an account on GitHub.https://github.com/frankRenlf/c_programs.git想测试就自己去mian函数里调用,记得看看其他的是不是都注释完了,写了好多,有点乱实现了q.原创 2022-02-12 13:24:49 · 159 阅读 · 1 评论 -
C语言 实现 mine clearance(扫雷)
已传入github,可直接下载:GitHub - frankRenlf/c_programsContribute to frankRenlf/c_programs development by creating an account on GitHub.https://github.com/frankRenlf/c_programs.git自定义炸弹个数可选择清理区域,或者确定炸弹,或者取消确定下面放几个片段...原创 2022-02-12 13:02:32 · 162 阅读 · 1 评论