【刷题笔记】

【刷题笔记】,第1张

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
  • 1、合并两个有序列表
  • 2、删除有序数组中的重复项
  • 3、移除数组nums中值为val的所有元素
  • 4、实现字符串函数strstr()


前言

在C++的学习过程中,刷过的题和代码、注释详解,方便日后自己查阅。


1、合并两个有序列表

代码如下:

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        if(list1 == NULL)
            return list2;
        if(list2 == NULL)
            return list1;
        ListNode *preNode = new ListNode(-1);
        ListNode *pre = preNode;
        while(list1 && list2)
        {
            if(list1->val <= list2->val)
            {
                pre->next = list1;
                list1 = list1->next;
            }
            else
            {
                pre->next = list2;
                list2 = list2->next;
            }
            pre = pre->next;
        }
        if(list1 != NULL)
            pre->next = list1;
        if(list2 != NULL)
            pre->next = list2;
        return preNode->next;
    }
};
2、删除有序数组中的重复项

代码如下:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.size() == 0)
            return NULL;
        int i = 1;
        for(int j = i;j < nums.size();j++)
        {
            if(nums[j] != nums[i-1])
            {
                nums[i] = nums[j];
                i++;
            }
        }
        return i;
    }
};
3、移除数组nums中值为val的所有元素

代码如下:

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        if(nums.size() == 0)
            return 0;
        int left = 0;
        for(int right = 0;right < nums.size();right++)
        {
            if(nums[right] != val)
            {
                nums[left] = nums[right];
                left++;
            }
        }
        return left;
    }
};
4、实现字符串函数strstr()

代码如下:

class Solution {
public:
    int strStr(string haystack, string needle) {
        int haylength = haystack.size();
        int needlength = needle.size();
        if(needlength == 0)
            return 0;
        if(haylength < needlength)
            return -1;
        for(int i = 0;i < haylength - needlength + 1;i++)
        {
            int j;
            for(j = 0;j < needlength;j++)
            {
                if(haystack[i+j]!=needle[j])
                    break;
            }
            if(j == needlength)
                return i;

        }
        return -1;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1330343.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存