移除元素力扣c语言,力扣(LeetCode)刷题,简单题(第一期)

目录

开启2020年学习新征程,力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

第1题:两数之和

试题要求如下:

edc242e8204c6cc9b5b18759a14452ef.png

回答(C语言):

int* twoSum(int* nums, int numsSize, int target, int* returnSize){

int* res = (int *)malloc(sizeof(int) * 2);

for(int i = 0; i < numsSize-1; i++) {

for(int j = i + 1; j < numsSize; j++) {

if(nums[i] + nums [j] == target) {

res[0] = i;

res[1] = j;

*returnSize = 2;

return res;

}

}

}

*returnSize = 0;

return res;

}

第2题:整数反转

试题要求如下:

687c28a78de7ff735a1fe7caf204e700.png

回答(C语言):

int reverse(int x){

long num = 0;

while (x != 0) {

num = num * 10 + x % 10;

x = x / 10;

}

return (num>2147483647 || num

}

第3题:判断回字文

试题要求如下:

1802659b4991b6c51d8c847e3a604f17.png

回答(C语言):

bool isPalindrome(int x){

int num1=0;

long num2=0;

num1=x;

while(num1>0){

num2=num2*10+num1%10;

num1/=10;

}

if(num2==x)

return 1;

else

return 0;

}

第4题:罗马数字转整数

试题要求如下:

ab1106f07c7da360028cb0a0ca81062a.png

回答(C语言):

int charToInt(char c)

{

char strArray[7] = {'I','V','X','L','C','D','M'};

int intArray[7] = {1,5,10,50,100,500,1000};

for(int i = 0; i < 7; i++)

{

if(strArray[i] == c)

{

return intArray[i];

}

}

return 0;

}

int romanToInt(char * s)

{

int len = strlen(s);

int v = 0;

int c,n;

for(int i = 0; i < len - 1 ; i++)

{

c = charToInt(s[i]);

n = charToInt(s[i + 1]);

v = (c < n) ? v - c : v + c;

}

v += charToInt(s[len - 1]);

return v;

}

第5题:最长公共前缀

试题要求如下:

709f98e2dba15e45fcb307ef257e01e5.png

回答(C语言):

char * longestCommonPrefix(char ** strs, int strsSize)

{

if(strsSize==0)

return "";

if(strsSize==1)

return strs[0];

int i=0,j=0;

while(1)

{

if(strs[i][j]=='\0')

break;

if(strs[i][j]==strs[++i][j]) {

if(i==strsSize-1)

{

j++;

i=0;

}

}

else

break;

}

char* res=(char*)malloc(j+1);

res=memset(res,0,j+1);

res=strncpy(res,strs[0],j);

return res;

}

第6题:判断字符串有效括号

试题要求如下:

f498d0ad104e47cb6f08c521fbe8d44e.png

回答(C语言):

bool isValid(char * s){

int top = 0;

char *stack = (char*)malloc(strlen(s));

if (s==NULL || strlen(s)<=0) return true;

for (int i = 0; i

if(s[i]=='(' || s[i]=='{' || s[i]=='['){

stack[top++] = s[i];

}else{

if(--top < 0) return false;

if(s[i]==')' && stack[top] != '(') return false;

if(s[i]=='}' && stack[top] != '{') return false;

if(s[i]==']' && stack[top] != '[') return false;

}

}

if (top > 0) return false;

return true;

}

第7题:将两个有序链表合并

试题要求如下:

f4c75d21251dcbc49a4a1d891337e41f.png

回答(C语言):

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {

if(l1==NULL)

return l2;

if(l2==NULL)

return l1;

if(l1->val < l2->val){

l1->next = mergeTwoLists(l1->next,l2);

return l1;

}else{

l2->next = mergeTwoLists(l1,l2->next);

return l2;

}

}

第8题:将两个有序链表合并

试题要求如下:

ee59e2faceaa67f23ed716918128cf82.png

回答(C语言):

int removeDuplicates(int* nums, int numsSize){

int j=0;

if(nums==NULL || numsSize<=0)

return 0;

for(int i=0;i

if(nums[i]!=nums[i+1])

{

nums[j++]=nums[i];

}

}

nums[j]=nums[numsSize-1];

return j+1;

}

第9题:移除元素

试题要求如下:

3762f224eadcf67ad0c4f38611f54780.png

回答(C语言):

int removeElement(int* nums, int numsSize, int val){

int cou=0;

if(nums==NULL || numsSize<=0)

return 0;

for(int i=0;i

if(nums[i]==val){

cou++;

if(i==numsSize-cou)

break;

for(int j=i,k=i+1;j

nums[j]=nums[k];

}

else

{

i++;

}

}

return numsSize-cou;

}

第10题:实现 strStr() 函数

试题要求如下:

e7b80807309e541eb250a2df23ca2ea0.png

回答(C语言):

int strStr(char * haystack, char * needle){

int i=0,j=0,k=0;

while(haystack[i]&&needle[j])

{

if(haystack[i]==needle[j])

{

i++;

j++;

}

else

{

k++;

i=k;

j=0;

}

}

if(needle[j]=='\0')

return k;

return -1;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值