leetcode6037.按奇偶性交换后的最大数字(代码片段)

英雄哪里出来 英雄哪里出来     2022-12-03     714

关键词:

文章目录

一、题目

1、题目描述

  给你一个正整数 num。你可以交换 num奇偶性 相同的任意两位数字(即,都是奇数或者偶数)。返回交换任意次之后 num的最大可能值。
  样例输入: 1234
  样例输出: 3412

2、基础框架

  • C++ 版本给出的基础框架代码如下:
class Solution 
public:
    int largestInteger(int num) 
    
;

3、原题链接

LeetCode 6037. 按奇偶性交换后的最大数字

二、解题报告

1、思路分析

   ( 1 ) (1) (1) 首先将所有的数字摘出来;
   ( 2 ) (2) (2) 记录每个位置是 奇数的数 还是 偶数的数
   ( 3 ) (3) (3) 将奇数和偶数分别用不同的数组存起来;
   ( 4 ) (4) (4) 对奇数和偶数分别排序;
   ( 5 ) (5) (5) 然后再根据位置一次放回到原先对应的位置中;

2、时间复杂度

   最坏时间复杂度 O ( n ) O(n) O(n)

3、代码详解

class Solution 
public:
    int largestInteger(int num) 
        int stk[20], top = 0;
        int oddeven[20];
        int srt[2][20], srtSize[2] = 0, 0;
        int i;
        while(num) 
            stk[top++] = num % 10;
            num /= 10;
        
        for(i = 0; i < top; ++i) 
            oddeven[i] = (stk[top-1-i] & 1);
            int o = oddeven[i];
            srt[o][ srtSize[o]++ ] = stk[top-1-i];
        
        for(i = 0; i < 2; ++i) 
            sort(srt[i], srt[i] + srtSize[i]);
        
        int sum = 0;
        for(i = 0; i < top; ++i) 
            if(oddeven[i]) 
                sum = sum * 10 + srt[1][ --srtSize[1] ];
            else 
                sum = sum * 10 + srt[0][ --srtSize[0] ];
            
        
        return sum;
    
;

三、本题小知识

  数据量较小,直接暴力模拟可过。


四、加群须知

  相信看我文章的大多数都是「 大学生 」,能上大学的都是「 精英 」,那么我们自然要「 精益求精 」,如果你还是「 大一 」,那么太好了,你拥有大把时间,当然你可以选择「 刷剧 」,然而,「 学好算法 」,三年后的你自然「 不能同日而语 」
  那么这里,我整理了「 几十个基础算法 」 的分类,点击开启:

🌌《算法入门指引》🌌

  如果链接被屏蔽,或者有权限问题,可以私聊作者解决。

  大致题集一览:













  为了让这件事情变得有趣,以及「 照顾初学者 」,目前题目只开放最简单的算法 「 枚举系列 」 (包括:线性枚举、双指针、前缀和、二分枚举、三分枚举),当有 一半成员刷完 「 枚举系列 」 的所有题以后,会开放下个章节,等这套题全部刷完,你还在群里,那么你就会成为「 夜深人静写算法 」专家团 的一员。
  不要小看这个专家团,三年之后,你将会是别人 望尘莫及 的存在。如果要加入,可以联系我,考虑到大家都是学生, 没有「 主要经济来源 」,在你成为神的路上,「 不会索取任何 」
  🔥联系作者,或者扫作者主页二维码加群,加入刷题行列吧🔥


🔥让天下没有难学的算法🔥

C语言免费动漫教程,和我一起打卡!
🌞《光天化日学C语言》🌞

让你养成九天持续刷题的习惯
🔥《九日集训》🔥

入门级C语言真题汇总
🧡《C语言入门100例》🧡

组团学习,抱团生长
🌌《算法零基础100讲》🌌

几张动图学会一种数据结构
🌳《画解数据结构》🌳

竞赛选手金典图文教程
💜《夜深人静写算法》💜
与50位技术专家面对面 20年技术见证,附赠技术全景图

leetcode周赛第288场周赛(go语言实现版)(代码片段)

原创不易,未经允许,请勿转载。文章目录6037.按奇偶性交换后的最大数字题意思路代码实现6038.向表达式添加括号后的最小结果题意思路代码实现6039.K次增加后的最大乘积题意思路代码实现6040.花园的最大总美丽值题意... 查看详情

leetcode周赛第288场周赛(go语言实现版)(代码片段)

原创不易,未经允许,请勿转载。文章目录6037.按奇偶性交换后的最大数字题意思路代码实现6038.向表达式添加括号后的最小结果题意思路代码实现6039.K次增加后的最大乘积题意思路代码实现6040.花园的最大总美丽值题意... 查看详情

leetcode周赛第288场周赛(go语言实现版)(代码片段)

原创不易,未经允许,请勿转载。文章目录6037.按奇偶性交换后的最大数字题意思路代码实现6038.向表达式添加括号后的最小结果题意思路代码实现6039.K次增加后的最大乘积题意思路代码实现6040.花园的最大总美丽值题意... 查看详情

leetcode0670.最大交换(代码片段)

【LetMeFly】670.最大交换力扣题目链接:https://leetcode.cn/problems/maximum-swap/给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例1:输入:2736输出:7236解释:交换数字2和数字7。示例2:输入:9973... 查看详情

第三次过程性考核(代码片段)

码云地址:https://gitee.com/axsj/disancikaohe/tree/master7-4 交换最小值和最大值 (15分)本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。注意:... 查看详情

leetcode985.sumofevennumbersafterqueries(代码片段)

文章作者:Tyan博客:noahsnail.com | CSDN | 简书1.Description2.Solution**解析:**Version1,先对数组所有偶数求和,然后遍历查询,根据对应位置数字的奇偶性以及所加数字的奇偶性,来进行总和的加减操作并... 查看详情

educationalcodeforcesround35dinversioncounting

...【题解】排列中交换任意两个数字。排列的逆序对个数的奇偶性会发生变化。翻转这个过程其实就是len/2对数字发生交换。交换了偶数次的话,不变,否则奇偶性发生改变。先暴力求出一开始的逆序对个数就好【代码】#include<bits/... 查看详情

leetcode1619.删除某些元素后的数组均值(代码片段)

...1619.删除某些元素后的数组均值力扣题目链接:https://leetcode.cn/problems/mean-of-array-after-removing-some-elements/给你一个整数数组 arr ,请你删除最小 5% 的数字和最大5% 的数字后,剩余数字的平均值。与标准答案 误差在 1... 查看详情

leetcode328.奇偶链表c++/java详细题解(代码片段)

目录1、题目2、思路3、c++代码4、java代码1、题目给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试... 查看详情

第3周作业第2题数字和特征

...(5分)题目内容:对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在第n位上的数字记作x,如果x和n的奇偶性相同... 查看详情

使用两次遍历解决“按奇偶排序数组”问题(代码片段)

...ngth<=50000<=nums[i]<=5000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-array-by-parity27.2、解题思路  先遍历数组,将数字对2取余,取余为0,将数字加入新的数组中;再重新遍历一遍数组并对数组... 查看详情

leetcode670最大交换[暴力贪心]heroding的leetcode之路(代码片段)

解题思路:由于给定的位数最大为8位,那么即使用暴力的方式最多也只要交换28次,所以第一种方法就是暴力交换任意两位,找到找到最大值并返回,代码如下:classSolutionpublic:intmaximumSwap(intnum)strings=to_... 查看详情

codeforces1545a.aquamoonandstrangesort(思维,排序奇偶性)(代码片段)

题意:解法:每次交换,下标奇偶性变化要保证每个数最后,下标的奇偶性不变.统计每个数排序之前的奇偶个数统计每个数排序之后的奇偶个数如果某个数的奇偶性不相同则无解容易证明上述做法的正确性.code:#include&l... 查看详情

codeforcesround#485(代码片段)

...意两个数会使逆序对个数变化奇数个,而\(3*n\)和\(7*n-1\)奇偶性不同,因此我们可以直接判断该序列的逆序对个数的奇偶性与\(n\)的奇偶性是否相同即可。(场上我像智障一样打错变量名w 查看详情

922.按奇偶排序数组ii『简单』(代码片段)

题目来源于力扣(LeetCode)目录一、题目二、解题思路2.1新数组存储方式2.2奇偶替换方式三、代码实现3.1新数组存储方式3.2奇偶替换方式四、执行用时3.1新数组存储方式3.2奇偶替换方式五、部分测试用例一、题目922.按奇偶排序数... 查看详情

按奇偶排序数组(代码片段)

exportdefault(arr)=>//进行升序排序arr.sort((a,b)=>a-b)//声明一个空数组用来存储奇偶排序后的数组letr=[]//记录奇数、偶数位下标letodd=1leteven=0//对数组进行遍历arr.forEach(item=>if(item%2===1)r[odd]=itemodd+=2elser[even]=itemeven+=2)returnr 查看详情

算法leetcode2317.操作后的最大异或和(rust和go重拳出击)(代码片段)

文章目录2317.操作后的最大异或和:样例1:样例2:提示:分析题解rustgotypescriptpythoncc++java原题传送门:https://leetcode.cn/problems/maximum-xor-after-operations/2317.操作后的最大异或和:给你一个下标从 查看详情

算法leetcode2317.操作后的最大异或和(rust和go重拳出击)(代码片段)

文章目录2317.操作后的最大异或和:样例1:样例2:提示:分析题解rustgotypescriptpythoncc++java原题传送门:https://leetcode.cn/problems/maximum-xor-after-operations/2317.操作后的最大异或和:给你一个下标从 查看详情