顺序表力扣题

简介: 顺序表力扣题

目录

移除元素

法一,暴力覆盖

法二,数组接收

法3双指针判断

合并两个有序数组

移除元素

法一,暴力覆盖

移除元素

image.png

image.png

image.png

法一,暴力覆盖

int removeElement(int* nums, int numsSize, int val){
int len=numsSize;
int i=0;
for(i=0;i<numsSize;i++)
{
    if(nums[i]==val)/当nums的元素和val一致时
    {
        int start=i+1;/把这个元素消掉,就把这个元素给覆盖掉
        while(start<numsSize)//当start的值到numssize时就停止
        {
            nums[start-1]=nums[start];//前一个的值等于后一个的值
            start++;
        }
        len--;//每执行一次,就把len--,最终返回的就是len的值
    }
}
return len;
}


法二,数组接收

image.png

int removeElement(int* nums, int numsSize, int val)
{
    int arr[numsSize+1];//我们一开始要把arr的长度赋为numssize+1,因为假如说nums为空,也就是说numssize的值为0,arr就是一个无长度的数组,是错误的
    memset(arr,0,sizeof(arr));
    int i=0;
    int j=0;
    int count=0;
    for(i=0;i<numsSize;i++)
    {
        if(nums[i]!=val)//当nums里面的值和val不一样时,就把nums的值赋给arr来接收
        {
            arr[j]=nums[i];
            j++;
            count++;//同时count++,最终返回count
        }
    }
    for(i=0;i<count;i++)
    {
        nums[i]=arr[i];//最后在把arr的值赋给nums,因为要返回的是nums
    }
    return count;
}

法3双指针判断

int removeElement(int* nums, int numsSize, int val) {
int src=0,dst=0;
int i=0;
for(i=0;i<numsSize;i++)
{
    if(nums[src]!=val)
    {
        nums[dst]=nums[src];
        dst++;
        src++;
    }
    else
    {
        src++;
    }
}
return dst;
}

合并两个有序数组

image.png

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
int end=m+n-1;
int end1=m-1;
int end2=n-1;
while(end1>=0&&end2>=0)
{
    if(nums1[end1]>nums2[end2])
    {
        nums1[end]=nums1[end1];
        end1--;
        end--;
    }
    else
    {
        nums1[end]=nums2[end2];
        end2--;
        end--;
    }
}
while(end2>=0)
{
    nums1[end]=nums2[end2];
        end2--;
        end--;
}
}
相关文章
|
10月前
数据结构-顺序表-力扣题练习
数据结构-顺序表-力扣题练习
38 1
|
11月前
|
存储 算法
顺序表、链表刷题指南(力扣OJ)
顺序表、链表刷题指南(力扣OJ)
50 0
|
存储
力扣之顺序表
力扣之顺序表
|
C++
【数据结构初阶】 顺序表三道题,带你见力扣
【数据结构初阶】 顺序表三道题,带你见力扣
80 0
【数据结构初阶】 顺序表三道题,带你见力扣
力扣88.合并两个有序数组【顺序表】
力扣88.合并两个有序数组【顺序表】
122 0
力扣88.合并两个有序数组【顺序表】
|
算法
力扣26.删除有序数组中的重复项【顺序表】
力扣26.删除有序数组中的重复项【顺序表】
64 0
力扣26.删除有序数组中的重复项【顺序表】
力扣27.移除元素【顺序表】
力扣27.移除元素【顺序表】
99 0
力扣27.移除元素【顺序表】
|
存储 算法
LeetCode——顺序表相关的oj题
LeetCode——顺序表相关的oj题
73 0
LeetCode——顺序表相关的oj题
LeetCode每日一刷 --- 拿捏顺序表经典面试题
目录 1、移除元素 2、删除有序数组中的重复项 3、合并两个有序数组
LeetCode每日一刷 --- 拿捏顺序表经典面试题
|
1月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
38 6