![](https://img-blog.csdnimg.cn/d8ab8dad014141ada1e2e41b0f209230.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode每日题解C语言版
个人写题用,暂时断更,改用java
Sivan_Xin
Hi,终于等到你。爱好:Coding&Debug。博客内容:后端方向。喜欢和优秀的人做有挑战的事!
展开
-
LeetCode 482 密钥格式化
(思路借鉴,代码实写)原创 2021-12-11 16:43:32 · 671 阅读 · 13 评论 -
LeetCode 434 字符串中的单词数
解题思路如果i是0并且第i位不是空格,cnt++。如果i不是0,i 的前一位是0,但是第 i 位不是0,cnt++。C语言代码实现借鉴了别人的思路:int countSegments(char * s){ int len = strlen(s); int cnt = 0; for(int i = 0;i < len; i++) //当len=0,cnt=0. { if((i==0||s[i-1]==' ') && s[i]!=.原创 2021-12-08 21:18:10 · 295 阅读 · 2 评论 -
LeetCode 412 Fizz Buzz
讲了sprintf函数与二级指针。原创 2021-12-07 20:16:22 · 402 阅读 · 3 评论 -
LeetCode 9 回文数
C语言代码实现本题较易,不作讲解。bool isPalindrome(int x) { long int cnt=-1; long int mark; long int a; long int sum=0; long int z=x; if (x < 0) { return false; } if (x >=0) { long int t=x; while (t) { t /= 10; cnt++; } mar...原创 2021-12-06 21:23:34 · 360 阅读 · 6 评论 -
LeetCode 383 赎金信
今天是Sivan坚持写题解的第13天。解题思路先将数组排序,之后对比ransomNote和magazine,一位一位向后找。C语言代码实现int cmp1(const void* e1, const void* e2);bool canConstruct(char* ransomNote, char* magazine) { int lenr = strlen(ransomNote); int lenm = strlen(magazine); int i, j;.原创 2021-12-05 12:57:33 · 4825 阅读 · 4 评论 -
LeetCode 345 反转字符串中的元音字母
今天是坚持写题解的第12天。代码细节可以写一个函数避免if语句过长的尴尬。C语言代码实现较易,省略解题思路。int choose(char c);char* reverseVowels(char* s) { int len = strlen(s); int left = 0, right = len - 1; while (left < right) { int cntl = 0, cntr = 0; if (choose(s[left])){ cnt.原创 2021-12-04 13:33:21 · 5527 阅读 · 12 评论 -
LeetCode 7&1480 整数反转&一维数组的动态和
1480代码:(returnsize的意思是问返回数组的长度。)int* runningSum(int* nums, int numsSize, int* returnSize){ int i; int *ret=NULL; *returnSize=numsSize; ret=(int*)malloc(sizeof(int)*numsSize); ret[0]=nums[0]; for(i=1;i<numsSize;i++){ re原创 2021-11-27 15:05:44 · 79 阅读 · 0 评论 -
LeetCode 13 罗马数字转整数
C答案:注意顺序,先判断特殊情况,在判断正常情况。int romanToInt(char* s) { int i = 0; int sum = 0; int len = strlen(s); while (i < len) { if (s[i] == 'I' && s[i + 1] == 'V') { sum += 4; i += 2; } if (s[i] == 'I' && s[i + 1] == 'X') { sum +原创 2021-11-28 20:19:25 · 429 阅读 · 0 评论 -
LeetCode 66 加一
目录题目描述(简单难度)解题思路代码实现题目描述 (简单难度)解题思路1.普通情况:当最后一位是[0,8]时,简单在该位上加一。2.特殊情况:当一位为9时,该位变成0。第一位为9时,该位也变成了0。2.1当第一位变为0时,需要进位。malloc新的数组,需要比digitalSize多一位。第一位是1,其余位是0。C的代码实现int* plusOne(int* digits, int digitsSize, int* returnSiz...原创 2021-11-30 23:58:28 · 365 阅读 · 0 评论 -
LeetCode 14 最长公共前缀
C://char**是指针的指针。可以理解为二维数组。char* longestCommonPrefix(char** strs, int strsSize) { int i, j; if (strsSize == 0) { //长度为0,返回空字符串。 return ""; } for (i = 0; i < strlen(strs[0]); i++) { //只拿第一个字符串去比,有不一样的就把strs[0][i]变为\0.原创 2021-11-29 17:06:00 · 405 阅读 · 0 评论 -
LeetCode 168 Excel表列名称
void swap(char* set, int len);char* convertToTitle(int columnNumber) { char* ret = (char*)malloc(sizeof(char) * 8); int cnt = 0; while (columnNumber) { int remainder = columnNumber % 26; if (remainder == 0) { remainder = 26; columnNumber -=.原创 2021-12-02 09:41:49 · 464 阅读 · 0 评论 -
LeetCode 263 丑数
目录题目解题思路C语言代码实现题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ugly-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路数学类问题,借用官解的方法。重点是想到n可以写成以下的形式,取余为0就除掉,最后为1则是丑数。很多人容易把方法想复杂,在解题时,一定要做到思路清晰,才不会导致把简单问题复杂化。C语言代码实现bool isUgly(...原创 2021-12-03 00:08:58 · 250 阅读 · 0 评论 -
LeetCode 171 Excel表列序号
目录题目(较易)解题思路代码实现题目(较易)来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/excel-sheet-column-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路本质为进制转换,26进制转换为10进制。关于10进制转换为其他进制可参考我的其他文章:LeetCode 168 Excel表列名称(C语言实现)_Sivan_Xin的博客-CSD...原创 2021-12-02 16:25:19 · 141 阅读 · 0 评论 -
LeetCode 190 颠倒二进制位
目录题目解题思路代码细节C语言代码实现题目解题思路解题前明确:该题的输入与输出都是十进制整数。1.将十进制转换为二进制。(用字符串数组储存二进制,放入数组过程中自己反转了)2.当n为0时,可能剩下几位全是0但是没有输出,用while循环输出剩余的0。3.将二进制转换为十进制。代码细节用malloc动态申请内存记得free掉。(malloc有最后一位\0)C语言代码实现uint32_t reverseBits(uint32_t ..原创 2021-12-02 16:55:11 · 139 阅读 · 0 评论 -
LeetCode 859 亲密字符串(sqort)
初始代码:考虑的是最普通的情况且不易修改。void swap(char* p1, char* p2);bool buddyStrings(char* s, char* goal) { int i, j; int lens = strlen(s); char b[20001]={0}; strcpy(b, s); for (i = 0; i < lens-1; i++) { strcpy(s, b); swap(&s[i], &s[i+1]); .原创 2021-11-26 17:55:56 · 406 阅读 · 0 评论 -
LeetCode 541 反转字符串II
char* reverseStr(char* s, int k) { int start; int end; int i; //循环次数 int len; len = strlen(s); //s的长度 //交换字符串 char t; /* s=abcdefghijk len=11 k=2,2k=4 0-k取反 2k-3k取反 if len-3k<2k&&len-3k>=k 3k-4k取反 s=abcde.原创 2021-11-25 21:46:10 · 313 阅读 · 0 评论 -
LeetCode 495 提莫攻击
C:int findPoisonedDuration(int* timeSeries, int timeSeriesSize, int duration) { int i ; int sum; sum = duration; //最后一次是整间隔。 for (i = 0; i < timeSeriesSize-1; i++) { if (timeSeriesSize == 1) { break; } .原创 2021-11-24 11:36:13 · 202 阅读 · 0 评论 -
LeetCode 1 两数之和
第一次写://枚举#include <stdio.h> int* twoSum(int* nums, int numsSize, int target, int* returnSize) { scanf_s("%d", &target); int i,j; numsSize = sizeof(nums) / sizeof(*nums); for (i = 0; i < numsSize; i++) { for (j = i+1; j < num原创 2021-11-23 21:29:46 · 128 阅读 · 0 评论 -
LeetCode 268 丢失的数字
解题思路先将数组进行排序,再去寻找对应缺失的数字即可。重点是要想到对数组排序。C语言代码实现int missingNumber(int* nums, int numsSize) { int i, j; for (i = 0; i < numsSize-1; i++) { for (j = i + 1; j < numsSize; j++) { if (nums[i] > nums[j]) { swap(&nums[i], &nu...原创 2021-12-03 13:32:13 · 507 阅读 · 0 评论