您的位置:首页 > 房产 > 建筑 > 天津网上办事大厅官网_视频来源网址怎么弄_seo综合查询是啥意思_品牌推广工作内容

天津网上办事大厅官网_视频来源网址怎么弄_seo综合查询是啥意思_品牌推广工作内容

2025/9/14 13:25:44 来源:https://blog.csdn.net/qq_53989364/article/details/144436395  浏览:    关键词:天津网上办事大厅官网_视频来源网址怎么弄_seo综合查询是啥意思_品牌推广工作内容
天津网上办事大厅官网_视频来源网址怎么弄_seo综合查询是啥意思_品牌推广工作内容

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素。
要求时间复杂度为O(N),空间复杂度为O(1)。


int removeElement(int* nums, int numsSize, int val)
{
    int scr = 0;
    int dest = 0;
    while (scr < numsSize)
    {
        if (nums[scr] != val)//不是则放里面
        {
            nums[dest] = nums[scr];
            scr++;
            dest++;
        }
        else //是则跳过
        {
            scr++;
        }
    }
    return dest;
}

删除排序数组中的重复项。
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。


int removeDuplicates(int* nums, int numsSize)
{
    if (numsSize == 0)
    {
        return 0;
    }
    int prev = 0;
    int cur = 1;
    int dest = 0;
    while (cur < numsSize)
    {
        if (nums[cur] != nums[prev])
        {
            nums[dest] = nums[prev];
            prev++;
            cur++;
            dest++;
        }
        else
        {
            prev++;
            cur++;
        }
    }
    nums[dest] = nums[prev];
    dest++;
    prev++;
    return dest;
}


整数的 数组形式  num 是按照从左到右的顺序表示其数字的数组。

例如,对于 num = 1321 ,数组形式是[1, 3, 2, 1] 。
给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num + k 的 数组形式 。

int* addToArrayForm(int* num, int numSize, int k, int* returnSize)

{

    int kSize = 0; // 用于计算 k 的位数

    int kNum = k;  // 保留 k 的原始值,方便后续处理

    while (kNum)

    {

        ++kSize;

        kNum = kNum / 10;  // 这里使用 kNum 而不是修改 k

    }

 // 确定需要处理的最大长度

    int len = numSize > kSize ? numSize : kSize

    // 分配返回数组,预留一个额外空间以处理进位

    int* retArr = (int*)malloc(sizeof(int) * (len + 1));

    int Ai = numSize - 1; // 数组从尾部开始处理

    int reti = 0;         // retArr 的当前索引

    int nextNum = 0;      // 表示进位

    while (len) // 修复:len 是一个固定值,应逐步减少到 0

    {

        int a = 0;

        if (Ai >= 0) // 如果 num 数组还有数字,则取出当前数字

        {

            a = num[Ai];

            Ai--;

        }

        int ret = a + k % 10 + nextNum; // 当前位相加,包含进位

        k /= 10;                        // k 去掉最低位

        if (ret > 9)                    // 如果结果大于 9,则需要进位

        {

            ret -= 10;

            nextNum = 1;

        }

        else

        {

            nextNum = 0;

        }

        retArr[reti] = ret; // 保存当前位的结果

        ++reti;

        --len; //  len 递减,确保循环退出

    }

    if (nextNum == 1) // 如果最后还有进位,则补充到结果数组中

    {

        retArr[reti] = 1;

        reti++;

    }

    // 逆置数组

    int left = 0;

    int right = reti - 1;

    while (left < right)

    {

        int tmp = retArr[left];

        retArr[left] = retArr[right];

        retArr[right] = tmp;

        left++;

        right--;

    }

    *returnSize = reti; // 设置返回数组的大小

    return retArr;

}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com