(20230417)最大数合并区间重新排列单词间的空格 按奇偶排序数组 II 数组形式的整数加法

news2024/11/25 12:33:34

最大数(回顾等级:值得,已达最优解)

来源:自己LeetCode刷题
usa
在这里插入图片描述

long cmp(const void* e1, const void* e2)
{
    int* p1=(int*)e1;
    int* p2=(int*)e2;
    long n1=10;
    long n2=10;
    while(*p1>=n1)
    {
        n1*=10;
    }
    while(*p2>=n2)
    {
        n2*=10;
    }
    return ((*p2)*n1+*p1)-((*p1)*n2+*p2);
}
char* largestNumber(int* nums, int numsSize)
{
    qsort(nums,numsSize,sizeof(int),cmp);
    char* ans=(char*)malloc(sizeof(char)*1010);
    memset(ans,0,sizeof(char)*1010);
    int k=0;
    if (nums[0]==0)
    {
        ans[0]='0';
        return ans;
    }
    for (int i=0;i<numsSize;i++)
    {
        sprintf(ans+k,"%d",nums[i]);
        k=strlen(ans);
    }
    return ans;
}
  1. 这道题的逻辑是这样子的,首先我们想到的是要对这个数组进行排序,那么究竟依据什么样的排序规则呢?
  2. 我们希望满足对于排序后的数组当中的每一个数,从左到右它的最高位数字都是递减的,当出现最高位数字相同的情况,那么就比较次高位,以此类推,直到出现递减态势(对于更特殊的情况,如:4,43 4,45,自己去想),这就是我们希望排序后这个数组的样子。
  3. 在c语言当中要实现如此自由的排序只能用qsort,与此同时,我得写一个比较函数用来比较对于相邻两个数它们之间排序后的前后顺序关系。这个就是精华所在,见图
    在这里插入图片描述
  4. 这边的一个数据类型的控制与sprintf都是亮点所在。

合并区间(回顾等级:不值得,已达最优解)

来源:自己LeetCode刷题
usa
在这里插入图片描述

int cmp(const void* e1, const void* e2)
{
    int** pp1=(int**)e1;
    int** pp2=(int**)e2;
    int gap=(*pp1)[0]-(*pp2)[0];
    if (gap==0)
    {
        return (*pp1)[1]-(*pp2)[1];
    }
    return gap;
}
int** merge(int** intervals, int intervalsSize, int* intervalsColSize, int* returnSize, int** returnColumnSizes)
{
    qsort(intervals,intervalsSize,sizeof(int*),cmp);
    int* tmp1=(int*)malloc(sizeof(int)*intervalsSize*2);
    int q=0;

    int** ans=(int**)malloc(sizeof(int*)*intervalsSize);
    int k=0;

    int start=intervals[0][0];
    int end=intervals[0][1];

    for (int i=1;i<intervalsSize;i++)
    {
        int newstart=intervals[i][0];
        int newend=intervals[i][1];
        if (newstart>end)
        {
            ans[k++]=(int*)malloc(sizeof(int)*2);
            ans[k-1][0]=start;
            ans[k-1][1]=end;
            start=newstart;
            end=newend;
            tmp1[q++]=2;
        }
        else
        {
            end=newend>end?newend:end;
        }
    }
    ans[k++]=(int*)malloc(sizeof(int)*2);
    ans[k-1][0]=start;
    ans[k-1][1]=end;
    tmp1[q++]=2;
    *returnColumnSizes=tmp1;
    *returnSize=k;
    return ans;
}

重新排列单词间的空格(回顾等级:不值得,已达最优解)

来源:自己LeetCode刷题
在这里插入图片描述

char * reorderSpaces(char * text)
{
    int sz=strlen(text);
    int NumOfWord=0;
    int NumOfSpace=0;
    int arr[55]={0};
    int flag=0;
    for (int i=0;i<sz;i++)
    {
        if (text[i]!=' ' && flag==0)
        {
            arr[NumOfWord]=i;
            flag=1;
        }
        else if (text[i]==' ')
        {
            if (flag==1)
            {
                NumOfWord++;
            }
            NumOfSpace++;
            flag=0;
        }
    }
    if (text[sz-1]!=' ')
    {
        NumOfWord++;
    }
    int gap=0;
    if (NumOfWord!=1)
    {
        gap=NumOfSpace/(NumOfWord-1);
    }
    char* ans=(char*)malloc(sizeof(char)*(sz+5));
    int k=0;
    for (int i=0;i<NumOfWord;i++)
    {
        int num=arr[i];
        while(text[num]!=' ' && text[num]!='\0')
        {
            ans[k++]=text[num];
            num++;
        }
        if (i!=NumOfWord-1)
        {
            for (int j=0;j<gap;j++)
            {
                ans[k++]=' ';
            }
        }
    }           
    for (int i=0;i<NumOfSpace-gap*(NumOfWord-1);i++)
    {
        ans[k++]=' ';
    }
    ans[k++]='\0';
    return ans;
}

按奇偶排序数组 II(回顾等级:不值得,已达最优解)

来源:自己LeetCode刷题
usa
在这里插入图片描述

int* sortArrayByParityII(int* nums, int numsSize, int* returnSize)
{
    int even=0;
    int odd=1;
    while(even<=numsSize-1 && odd<=numsSize-1)
    {
        while(even <= numsSize-1 && nums[even]%2==0)
        {
            even+=2;
        }
        while(odd <= numsSize-1 && nums[odd]%2==1)
        {
            odd+=2;
        }
        if (even>=numsSize || odd>=numsSize)
        {
            break;
        }
        int tmp=nums[even];
        nums[even]=nums[odd];
        nums[odd]=tmp;
        even+=2;
        odd+=2;
    }
    *returnSize=numsSize;
    return nums;
}

数组形式的整数加法(回顾等级:可以,已达最优解)

来源:自己LeetCode刷题
usa
在这里插入图片描述

int* addToArrayForm(int* num, int numSize, int k, int* returnSize)
{
    int* ans= (int*)malloc(sizeof(int)*(10>numSize?10:numSize+1));
    int q=0;
    for (int i=numSize-1;i>=0;i--)
    {
        int sum = num[i]+k%10;
        k/=10;
        if (sum>9)
        {
            sum%=10;
            k++;
        }
        ans[q++]=sum;
    }
    while(k>0)
    {
        ans[q++]=k%10;
        k/=10;
    }
    int left=0;
    int right=q-1;
    while(left<right)
    {
        int tmp=ans[left];
        ans[left]=ans[right];
        ans[right]=tmp;
        left++;
        right--;
    }
    *returnSize=q;
    return ans;
}
  1. 这是方法1, 逐位相加法
int* addToArrayForm(int* num, int numSize, int k, int* returnSize)
{
    int* ans =(int*)malloc(sizeof(int)*(10>numSize?10:numSize+1));
    int q=0;
    int i=numSize-1;
    while(i>=0)
    {
        num[i]+=k;
        ans[q++]=num[i]%10;
        k=num[i]/10;
        i--;
    }
    while (k>0)
    {
        ans[q++]=k%10;
        k/=10;
    }
    int left=0;
    int right=q-1;
    while(left<right)
    {
        int tmp=ans[left];
        ans[left]=ans[right];
        ans[right]=tmp;
        left++;
        right--;
    }
    *returnSize=q;
    return ans;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用AOP实现统一功能处理

目录 一、实现用户登录校验 实现自定义拦截器 将自定义的拦截器添加到框架的配置中&#xff0c;并且设置拦截的规则 二、实现统一异常处理 三、实现统一数据格式封装 一、实现用户登录校验 在之前的项目中&#xff0c;在需要验证用户登录的部分&#xff0c;每次都需要利…

RK3568平台开发系列讲解(环境篇)使用USB线缆升级固件

🚀返回专栏总目录 文章目录 一、进入升级模式1.1、硬件方式进入Loader模式1.2、软件方式进入Loader模式二、安装烧写工具2.1、Windows操作系统2.2、Linux操作系统沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍了如何将主机上的固件,通过USB数据线烧录到…

Typora(Mckbook版)的使用方法

1、标题&#xff08;⌘ 数字&#xff09; 一级标题&#xff1a;&#xff08;⌘ 1&#xff09; 二级标题&#xff1a;&#xff08;⌘ 2&#xff09; 三级标题&#xff1a;&#xff08;⌘ 3&#xff09; 四级标题&#xff1a;&#xff08;⌘ 4&#xff09; ... 六级标…

0303github搜索案例-react应用

文章目录1 前言2 静态组件2.1 静态页面和样式2.2 静态组件3 axios请求github接口4 优化案例结语1 前言 学习了脚手架配置axios&#xff0c;我们通过访问github的接口来做个练习。实例效果如下所示&#xff1a; 搜索框输入github用户名关键字&#xff0c;点击搜索&#xff0c;列…

AD633JRZ-ASEMI代理ADI亚德诺AD633JRZ车规级芯片

编辑-Z AD633JRZ芯片参数&#xff1a; 型号&#xff1a;AD633JRZ 总误差&#xff1a;1% 标度电压错误&#xff1a;0.25% 电源干扰&#xff1a;0.01% 输出偏移电压&#xff1a;5mV 小信号带宽&#xff1a;1MHz 斜率&#xff1a;20V/s 沉降时间达到1%&#xff1a;2s 宽…

在 Rocky linux 8.7 使用 Kubespray v2.21.0 离线部署 kubernetes v1.24.0 集群

文章目录前言创建7台虚拟机要求配置代理下载介质介质初始化安装工具包配置互信编写 inventory.ini创建 offline.ymlt他、部署 offline repo部署 kubespray报错2报错3报错报错&#xff1a;container-engine/containerd : containerd &#xff5c; Create registry directories分…

5.Dockerfile

1.什么是Dockerfile Dockerfile其实就是一个文本文件&#xff0c;由一系列命令和参数构成&#xff0c;Docker可以读取Dockerfile文件并根据Dockerfile文件的描述来构建镜像。 1、对于开发人员&#xff1a;可以为开发团队提供一个完全一致的开发环境&#xff1b; 2、对于测试人…

Servlet API

目录 1.HttpServlet 1.doGet 2.doPost 2.HttpServletRequest 2.1方法 2.2打印请求信息 2.3获取GET请求的参数 2.4post请求body格式 1.x-www-form-urlencoded 2.json 3.HttpServletResponse 3.1方法 3.2设置状态码 3.3自动刷新 3.4构造重定向的响应 1.HttpServlet 方法…

VMware Workstation Pro17安装并导入旧虚拟机系统

VMware Workstation Pro17 VMware是一个虚拟机软件&#xff0c;可以用来虚拟化各种系统&#xff0c;便于进行开发和其他相关工作 VMware Workstation Pro17支持window11版本&#xff0c;如果vm版本太低了升级window的时候会提示卸载旧版本的 下载VMware Workstation Pro17 h…

网格贪心搜索逼近最优组合解

如有错误&#xff0c;感谢不吝赐教、交流 文章目录背景描述实现方法一、寻找两组合的最优二、基于两组合的最优结果寻找四组合最优三、基于四组合的最优结果寻找八组合最优四、基于八组合的最优结果寻找十六组合最优总结适用场景背景描述 假如list [0, 1, 2, 3, 4, 5, 6, 7, …

2023年第三届智能机器人与系统国际会议(ISoIRS 2023) | IEEE-CPS独立出版

2023年第三届智能机器人与系统国际会议(ISoIRS 2023) | IEEE-CPS独立出版 会议简介 Brief Introduction 2023年第三届智能机器人与系统国际会议(ISoIRS 2023) 会议时间&#xff1a;2023年5月26日-28日 召开地点&#xff1a;中国长沙 大会官网&#xff1a;www.isoirs.org ISoIRS…

软件测试别再被“薪资陷阱”困扰了,这份攻略带你轻松查薪资

大家好&#xff0c;我是锦都不二。 测试岗面试 当HR问你期望薪资是多少时&#xff0c; 如果你回答: 10K 恭喜&#xff0c;你已经被HR成功套路&#xff0c; 拿到offer时你会在心里这么嘀咕&#xff1a;我要是当时报价15k该多好。 所以如何知道自己在这个市场上的价值&#xff0c…

95-拥塞控制

拥塞控制1.什么是拥塞控制2.拥塞控制的方法(1)慢启动和拥塞避免(2)快速重传和快速恢复1.什么是拥塞控制 在计算机网络中的链路容量&#xff08;即带宽&#xff09;、交换结点中的缓存和处理机等&#xff0c;都是网络的资源。在某段时间&#xff0c;若对网络中某一资源的需求超…

excel在文本的固定位置插入字符、进行日期和时间的合并

1.excel在文本的固定位置插入字符 如上图&#xff0c;现在想要将其转化为日期格式&#xff08;比如2017/1/1&#xff09;&#xff0c;但是当设置单元格格式为日期时却显示出很多&#xff03;。我们可以通过在20170101中添加两个斜杠“/”来将其转化为2017/1/1。可以用replace函…

基于SSM的二手车交易平台小程序

选题背景 互联网是人类的基本需求&#xff0c;特别是在现代社会&#xff0c;个人压力增大&#xff0c;社会运作节奏高&#xff0c;随着互联网的快速发展&#xff0c;用户的需求也越来越高&#xff0c;用户也将越来越多依靠互联网而不是自己获取信息&#xff0c;使得各种软件程…

【逗老师的无线电】BM的AirSecurity功能使用以防止他人使用你的DMRID

众所周知&#xff0c;在使用DMR热点和中继的时候&#xff0c;如果别人的手台上配置了你的ID进行恶意呼叫&#xff0c;或者伪装你的身份进行通联&#xff0c;之前是没有办法防范的。 目前&#xff0c;BM更新了AirSecurity功能&#xff0c;通过在呼叫前预先单呼一个作为密码的号码…

计算机组成原理——第二章数据的表示和运算(上)

提示&#xff1a;日出有盼&#xff0c;落日有念&#xff0c;心有所期&#xff0c;忙而不茫 文章目录前言2.1.1 进位计数制2.1.2 BCD码2.1.3 无符号整数的表示和运算2.1.4 带符号整数的表示和运算(原反补)2.1.5原反补码的特性对比2.1.6 移码2.1.7 定点小数前言 这里主要是根据王…

vue3 history模式配置及nginx服务器配置

vue的路由方式有hash模式和history模式&#xff0c;history模式路由看起来有好些&#xff0c;路由路径里没有#号&#xff0c;而hash模式默认是有#号的。 vue3开始默认新建的项目都是history模式&#xff0c;不过history模式打包后想要使用正常访问的话&#xff0c;需要后端服务…

BIO/NIO/Netty网络通信编程

文章目录1 BIO (BLOCK IO)2. NIO (new IO)2.1 NIO-Buffer缓冲区2.2 NIO-Buffer分散读-集中写2.3 NIO-Buffer粘包半包2.4 NIO-Channel2.4.1 files相关操作2.4.2 channel网络通信2.4.3 处理消息边界2.4.4 buffer大小分配2.4.5 处理大量写事件2.5 selector-Epoll2.6 IO模型2.7 零拷…

懒人必备!Python代码帮你自动发送会议纪要,让你有更多时间做更重要的事情

目录 痛点&#xff1a; 应用场景&#xff1a; 源代码&#xff1a; 代码说明&#xff1a; 效果如下所示&#xff1a; 痛点&#xff1a; 在传统的工作中&#xff0c;发送会议纪要是一个比较繁琐的任务&#xff0c;需要手动输入邮件内容、收件人、抄送人等信息&#xff0c;每…