
LeetCode每日题解C语言版
个人写题用,暂时断更,改用java
Sivan_Xin
Hi,终于等到你。爱好:Coding&Debug。博客内容:后端方向。喜欢和优秀的人做有挑战的事!
展开
-
LeetCode 482 密钥格式化
(思路借鉴,代码实写)原创 2021-12-11 16:43:32 · 730 阅读 · 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 · 354 阅读 · 2 评论 -
LeetCode 412 Fizz Buzz
讲了sprintf函数与二级指针。原创 2021-12-07 20:16:22 · 496 阅读 · 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 · 389 阅读 · 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 · 4954 阅读 · 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 · 5646 阅读 · 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 · 123 阅读 · 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 · 455 阅读 · 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 · 446 阅读 · 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 · 452 阅读 · 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 · 568 阅读 · 0 评论 -
LeetCode 263 丑数
目录 题目 解题思路 C语言代码实现 题目 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/ugly-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 数学类问题,借用官解的方法。重点是想到n可以写成以下的形式,取余为0就除掉,最后为1则是丑数。 很多人容易把方法想复杂,在解题时,一定要做到思路清晰,才不会导致把简单问题复杂化。 C语言代码实现 bool isUgly(...原创 2021-12-03 00:08:58 · 306 阅读 · 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 · 183 阅读 · 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 · 215 阅读 · 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 · 444 阅读 · 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 · 370 阅读 · 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 · 293 阅读 · 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 · 176 阅读 · 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 · 588 阅读 · 0 评论