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

Tisfy Tisfy     2022-10-23     809

关键词:

【LetMeFly】670.最大交换

力扣题目链接:https://leetcode.cn/problems/maximum-swap/

给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。

示例 1 :

输入: 2736
输出: 7236
解释: 交换数字2和数字7。

示例 2 :

输入: 9973
输出: 9973
解释: 不需要交换。

注意:

  1. 给定数字的范围是 [0, 108]

方法一:两次遍历

要想使得一次交换的结果尽量大,那么越大的数就要尽可能地越靠前。

因此,直接第一层循环枚举“尽可能前”的位置,第二层循环寻找之后的最大且尽可能靠后的元素。

如果找到了比前面大的元素,就交换二者,并返回结果。

  • 时间复杂度 O ( log ⁡ 2 n u m ) O(\\log^2 num) O(log2num)
  • 空间复杂度 O ( log ⁡ n u m ) O(\\log num) O(lognum)

AC代码

C++

class Solution 
public:
    int maximumSwap(int num) 
        string s = to_string(num);
        for (int i = 0; i < s.size(); i++) 
            int locM = -1;
            char M = 0;
            for (int j = i + 1; j < s.size(); j++) 
                if (s[j] > s[i] && s[j] >= M) 
                    locM = j, M = s[j];
                
            
            if (locM != -1) 
                swap(s[i], s[locM]);
                return atoi(s.c_str());
            
        
        return atoi(s.c_str());
    
;

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/126826280

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

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给你一个正整数num。你可以交换num中奇偶性相同的任意两位数字&#... 查看详情

leetcode215数组中第k个最大的元素(代码片段)

题目链接:kth-largest-element-in-an-array方法1:使用快速排序。1、对数组进行partition,从left到right随机选择一个主元pivot,将pivot与left的元素交换位置。另索引j初始为left,扫描从left+1到right的元素,若小于pivot,则将其与++j处的元素... 查看详情

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

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

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

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

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

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

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

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

图解leetcode24:交换吧,链表!(代码片段)

...#xff0c;也是必考的“老熟人”。话不多说,直接开工。LeetCode24:交换链表题意两两交换链表相邻节点的值,返回交换后的链表。示例输入:head=[1,2,3,4]输出:[2,1,4,3]提示0<=链表节点数<& 查看详情

图解leetcode24:交换吧,链表!(代码片段)

...#xff0c;也是必考的“老熟人”。话不多说,直接开工。LeetCode24:交换链表题意两两交换链表相邻节点的值,返回交换后的链表。示例输入:head=[1,2,3,4]输出:[2,1,4,3]提示0<=链表节点数<& 查看详情

leetcode移动零(代码片段)

283.移动零统计连续“0”的个数,并不进行交换冇有“0”也不进行交换在与不为“0”数字交换classSolutionpublicvoidmoveZeroes(int[]nums)intcount=0;for(inti=0;i<nums.length;i++)if(nums[i]==0)count++;continue; 查看详情

[leetcode]85.maximalrectangle最大矩形(代码片段)

Givena2Dbinarymatrixfilledwith0‘sand1‘s,findthelargestrectanglecontainingonly1‘sandreturnitsarea.Example:Input:[["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]] 查看详情

leetcode0179.最大数(代码片段)

【LetMeFly】179.最大数力扣题目链接:https://leetcode.cn/problems/largest-number/给定一组非负整数nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要... 查看详情

leetcode0895.最大频率栈(代码片段)

【LetMeFly】895.最大频率栈力扣题目链接:https://leetcode.cn/problems/maximum-frequency-stack/设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。实现FreqStack 类:FreqStack() 构造一个空的堆栈。... 查看详情

leetcode0895.最大频率栈(代码片段)

【LetMeFly】895.最大频率栈力扣题目链接:https://leetcode.cn/problems/maximum-frequency-stack/设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。实现FreqStack 类:FreqStack() 构造一个空的堆栈。... 查看详情

leetcode0368.最大整除子集(代码片段)

【LetMeFly】368.最大整除子集力扣题目链接:https://leetcode.cn/problems/largest-divisible-subset/给你一个由无重复正整数组成的集合nums,请你找出并返回其中最大的整除子集answer,子集中每一元素对(answer[i],answer[j])都应当满足&#... 查看详情

leetcode24两两交换链表中的节点(代码片段)

https://leetcode-cn.com/problems/swap-nodes-in-pairs/、解决方案classSolutionpublicListNodeswapPairs(ListNodehead)if(head!=null&&head.next!=null)ListNodenode=head.next;head.next=swapPairs(head.next.next);node.next=head;returnnode;returnhead; 查看详情

leetcode——最大频率栈(代码片段)

1.题目2.题解维持两个Map+一个变量记录当前最大频率一个Map存储:当前元素——元素频率一个Map存储:频率——频率对应元素(用栈存储)classFreqStackMap<Integer,Integer>freq;//元素——频率Map<Integer,Deque<Integ... 查看详情

leetcode239.slidingwindowmaximum(滑动窗口最大值)(代码片段)

原题网址:https://leetcode.com/problems/sliding-window-maximum/Givenanarray nums,thereisaslidingwindowofsize k whichismovingfromtheveryleftofthearraytotheveryright.Youcanonlyseethe k numbersinthewin 查看详情

程序35最大最小交换(代码片段)

2018-08-12题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。1packageSuanFa;23importjava.util.Arrays;45publicclassDemo3567publicstaticvoidmain(String[]args)8//TODOAuto-generatedmethodstub9//题目:输入数组,最大的与第一个... 查看详情