力扣(LeetCode)刷题,简单题(第1期)

简介: 力扣(LeetCode)刷题,简单题(第1期)

目录

第1题:两数之和


第2题:整数反转


第3题:判断回字文


第4题:罗马数字转整数


第5题:最长公共前缀


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


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


第8题:删除重复元素


第9题:移除元素


第10题:实现 strStr() 函数


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


第1题:两数之和

试题要求如下:


image.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题:整数反转

试题要求如下:


image.png


回答(C语言):


int reverse(int x){
    long num = 0;
    while (x != 0) {
        num = num * 10 + x % 10;
        x = x / 10;
    }
    return (num>2147483647 || num<-2147483648) ? 0 : num;
}

第3题:判断回字文

试题要求如下:


image.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题:罗马数字转整数

试题要求如下:


image.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题:最长公共前缀

试题要求如下:

image.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题:判断字符串有效括号

试题要求如下:




 回答(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<strlen(s); 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题:将两个有序链表合并

试题要求如下:

image.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题:删除重复元素

试题要求如下:


image.png


回答(C语言):

int removeDuplicates(int* nums, int numsSize){
    int j=0;
    if(nums==NULL || numsSize<=0)
        return 0;
    for(int i=0;i<numsSize-1;i++){
        if(nums[i]!=nums[i+1])
        {
            nums[j++]=nums[i];
        }
    }
    nums[j]=nums[numsSize-1];
    return j+1;
}

第9题:移除元素

试题要求如下:


image.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<numsSize;){
        if(nums[i]==val){
            cou++;
            if(i==numsSize-cou)
                break;
            for(int j=i,k=i+1;j<numsSize-cou;j++,k++)
                nums[j]=nums[k];
        }
        else
        {
            i++;
        }
    }

   return numsSize-cou;

}

第10题:实现 strStr() 函数

试题要求如下:


image.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;


相关文章
|
5天前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
82 2
|
5天前
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
2月前
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
39 3
|
2月前
|
算法 Python
【Leetcode刷题Python】剑指 Offer 33. 二叉搜索树的后序遍历序列
本文提供了一种Python算法,用以判断给定整数数组是否为某二叉搜索树的后序遍历结果,通过识别根节点并递归验证左右子树的值是否满足二叉搜索树的性质。
17 3
|
2月前
|
Python
【Leetcode刷题Python】50. Pow(x, n)
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
18 1
|
2月前
|
Python
【Leetcode刷题Python】LeetCode 478. 在圆内随机生成点
本文介绍了LeetCode 478题的解法,题目要求在给定圆的半径和圆心位置的情况下实现在圆内均匀随机生成点的功能,并提供了Python的实现代码。
20 1
|
2月前
|
算法 Python
【Leetcode刷题Python】295. 数据流的中位数
本文介绍了一种使用Python实现的数据结构,用以支持数据流中添加整数并返回当前所有元素的中位数,通过排序列表来计算中位数。
16 1
|
2月前
|
算法 Python
【Leetcode刷题Python】73. 矩阵置零
本文介绍了LeetCode第73题的解法,题目要求在给定矩阵中将所有值为0的元素所在的行和列全部置为0,并提供了一种原地算法的Python实现。
19 0
【Leetcode刷题Python】73. 矩阵置零
|
2月前
|
Python
【Leetcode刷题Python】1467. 两个盒子中球的颜色数相同的概率
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
24 0