- 博客(30)
- 收藏
- 关注
原创 力扣四数之和(C语言)
return(int)a -(int)b;i++) {continue;break;continue;j++) {continue;break;continue;intleft++;left++;right–;right–;left++;} else {right–;
2023-02-13 21:02:46
91
原创 力扣.赎金信(C语言)非暴力解法
力扣.赎金信。我是先遍历的ranomNote字符串,其实先遍历magazine字符串更方便,可以少一个循环,但是思路基本是一样的,大家可以参考一下;
2023-02-12 11:03:39
82
原创 leetcode.202.快乐数(C语言)
力扣。这道题对快乐数做了一个定义,其中很重要的一个点就是第二点,这个数可能最后变为1,也可能会无限循环,他这里这个无限循环的意思是之前出现过的数会重复出现,如果没有理解到这个点这题就会比较难受,那么现在我们要做的就是看数会不会重复了,也就是要查重,那么我们第一时间就应该想到哈希表了,当然还有有一个点就是要求我们不断的求和,那么我们就可以单独定义一个函数来做求和操作。我们的函数主题是在有一个循环之中的,每一次循环我们需要对sum进行判断看它等不等于1,还要对sum进行查重,如果重复了我们就要返回false。
2023-02-09 16:34:44
465
原创 leetcode.15.三数之和(C语言)
下面展示一些 内联代码片。int cmp(const void *a,const void *b) { return *(int*)a-*(int*)b; }int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes){ *returnSize=0; if(numsSize<3) { return 0; } i
2023-02-06 17:24:46
94
原创 leetcode.13.罗马数字转整数(C语言)
一般来说从小的往大的加会比较简单,那么我们就从右向左进行遍历,因为有特殊情况的存在,会有大的字母在小的字母后面的情况,所以我们在循环的时候进行一下大小判断:如果碰到了前面一个的字母的值比他后面所有字母值的和还要小的情况我们就减去这个字母的值就行了。这个时候我们要做的是用后面那个大的字母表示的数来减去前面小的那个字母表示的数就得到了我们要求的数字。可以看到方法其实很简单,定义了一个数组,这个数组有24个元素,但是我们只有7个要表示的数,为什么呢,因为我们数组的下标是***‘字母’-‘A’
2023-02-05 11:29:19
314
原创 罗马数字转整数(C语言)
int romanToInt(char * s){int len=strlen(s);int i=0,re=0;for(i=0;i<len;i=i+1){if(s[i]‘I’){int j=i+1;if(s[j]‘V’){re=re+4;i++;}else if(s[j]‘X’){re=re+9;i++;}else{re=re+1;}}else if(s[i]‘V’){re=re+5;}else if(s[i]‘X’){int j=i+1;if
2023-02-04 21:14:11
215
原创 整数转罗马数字(C语言)
char *qian[]={"",“M”,“MM”,“MMM”};char *bai[]={"",“C”,“CC”,“CCC”,“CD”,“D”,“DC”,“DCC”,“DCCC”,“CM”};char *shi[]={"",“X”,“XX”,“XXX”,“XL”,“L”,“LX”,“LXX”,“LXXX”,“XC”};char ge[]={"",“I”,“II”,“III”,“IV”,“V”,“VI”,“VII”,“VIII”,“IX”};char * intToRoman(int num){c
2023-02-03 20:45:12
242
原创 盛水最多的容器(C语言)
int max(int a,int b){if(a>b){return a;}else{return b;}}int maxArea(int* height, int heightSize){int temp=0;int i=0,j=heightSize-1;for(;i<j;){if(height[i]<=height[j]){int t=height[i]*(j-i);temp=max(temp,t);i++;} else{
2023-02-02 21:23:57
178
原创 回文数(C语言)
bool isPalindrome(int x){long long a=x,b=0;int n;while(x>0){n=x%10;x=x/10;b=b*10+n;}if(a==b){return true;}else{return false;}}
2023-02-01 19:25:11
103
原创 力扣移除元素(C语言)
int removeElement(int* nums, int numsSize, int val){int fast=0,slow=0;for(fast=0;fast<numsSize;fast++){if(nums[fast]!=val){nums[slow]=nums[fast];slow++;}}return slow;}
2023-01-30 16:09:03
91
原创 力扣,重复的子字符串(C语言)
bool repeatedSubstringPattern(char * s){int len = strlen(s);bool jieguo = true;for (int i = 1; i * 2 <= len; ++i){if (len % i == 0){jieguo = true;for (int j = i; j <len; ++j){if (s[j] != s[j - i]){jieguo = false;break;}}if (jieguo){
2023-01-29 19:13:37
143
原创 力扣找出字符串中第一个匹配项的下标(C语言)
暴力比较:代码如下:int strStr(char * haystack, char * needle){int len1=strlen(haystack);int len2=strlen(needle);int i=0,j=0,k=0;bool jieguo=true;if(len1<len2){jieguo=false;}else{for(i=0;i<=len1-len2;i++){for(j=i,k=0;j<i+len2;j++,k++){if(ha
2023-01-28 19:40:20
440
原创 力扣左旋转字符串(C语言)
char* reverseLeftWords(char* s, int n){int len=strlen(s);int i=0,a=0;int j=n-1;int k=len-1;for(i=0;i<n/2;i++){char t=s[i];s[i]=s[j-i];s[j-i]=t;}int m=((len-n)/2)+n;for(i=n;i<m;i++){char r=s[i];s[i]=s[k-a];s[k-a]=r;a++;}for(i=0;i<
2023-01-27 16:38:10
72
原创 反转字符串中的单词(C语言)
char* reverseWords(char* s) {int len=strlen(s);int i=0,j=0;int flag=0;//将多余的空格除去for(j=0;j<len;j++){ if(s[j]==' ') { if(flag==0&&i!=0) { s[i]=' '; i=i+1; flag=1; } }
2023-01-26 21:58:34
338
原创 替换空格(C语言)
char* replaceSpace(char* s){int count = 0;int len = strlen(s);for (int i = 0; i < len; i++){if (s[i] == ’ '){count++;}}int newLen = len + count * 2;char* r = malloc(sizeof(char) * newLen + 1);for (int i = len - 1, j = newLen - 1; i >= 0;
2023-01-25 18:31:36
554
原创 力扣字符串反转‖C语言
char * reverseStr(char * s, int k){int n = strlen(s);for (int i = 0; i < n; i += (2 * k)) { k = i + k > n ? n - i : k; int l = i; int r = i + k - 1; while (l < r) { char temp = s[l]; s[l++] = s[r];
2023-01-24 22:11:00
51
原创 力扣反转字符串C语言
void reverseString(char* s, int sSize){int i;int n=sSize;for(i=0;i<sSize/2;i++){char t;t=s[i];s[i]=s[n-1];s[n-1]=t;n–;}return s;}
2023-01-23 13:19:13
63
原创 力扣8.字符串转换整数(C语言)
int myAtoi(char * s){int len=strlen(s),i=0,fuhao=1,j;//其中j为最后结果long double s1=0;while(*s==’ ')//将数字部分前面的空格排除{s++;len–;}//判断符号if(s==’-’){s++;len–;fuhao=-1;}else if(s==’+’){s++;fuhao=1;len–;}while(s!=’\0’){j=(int)s-48;//通过ASCII值来计算,当然要
2023-01-20 15:31:42
67
原创 整数反转(C语言)
int reverse(int x){int r=0;while(x!=0){if(r<INT_MIN/10||r>INT_MAX/10){return 0;}int n;n=x%10;x=x/10;r=r*10+n;}return r;}
2023-01-19 19:20:42
157
1
原创 z字形变换(C语言)
char * convert(char * s, int numRows){ int n = strlen(s), r = numRows; if (r == 1 || r >= n) { return s; } int t = r * 2 - 2; int c = (n + t - 1) / t * (r - 1); char ** mat = (char **)malloc(sizeof(char *) * r); for (
2023-01-18 09:53:27
236
1
原创 最长回文子串(C语言)
char * longestPalindrome(char * s){ int i, j=0, k=0, max=0, s_len, target[2]={0}; s_len = strlen(s); if(s_len<3){ if(s[0]==s[s_len-1]) return s; else return s+s_len-1; } for(i=0;i<s_len-1;i++){ if(*(s+i)==*
2023-01-17 18:29:18
333
1
原创 寻找两个正序数组的中位数(C语言)超简单方法
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){ int len=nums1Size+nums2Size; int i,p=0,q=0,head=-1,next=-1; for(i=0;i<=len/2;i++) { head=next; if(p<nums1Size&&(q>=n
2023-01-16 14:13:23
240
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人