LeetCode 1053
题目描述:
给你一个正整数数组 arr(可能存在重复的元素),请你返回可在 一次交换(交换两数字 arr[i] 和 arr[j] 的位置)后得到的、按字典序排列小于 arr 的最大排列。
如果无法这么操作,就请返回原数组。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/previous-permutation-with-one-swap
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
采用贪心的策略,假设我们要换第i个元素,那么我们只需要找到第i个元素后面小于当前元素的最大的那个元素进行交换即可。
这样我们就把问题转化为求i的位置即可,i的元素的位置我们采用贪心的策略,只需要找到最晚降序的那个元素的位置就是i的位置。
代码如下:
class Solution {
public:vector<int> prevPermOpt1(vector<int>& arr) {int len = arr.size();for(int i = len - 2 ; i >= 0 ; i--){if(arr[i]>arr[i+1]){//找到i后面小于arr[i]的最大元素int j = len - 1;while(arr[j] >= arr[i] || arr[j] == arr[j-1])j--;swap(arr[i],arr[j]);break;}}return arr;}
};
LeetCode 1053相关推荐
- LeetCode 1053. 交换一次的先前排列
1. 题目 给你一个正整数的数组 A(其中的元素不一定完全不同),请你返回可在 一次交换(交换两数字 A[i] 和 A[j] 的位置)后得到的.按字典序排列小于 A 的 最大可能排列. 如果无法这么操 ...
- LeetCode 1053. 交换一次的先前排列(贪心法)
题目 思路 这道题的要求初看还是比较复杂的:既要字典序小于原来的序列,又要在小于的字典序中求出最大值.按照题目的要求,应该尽量交换排在后面的元素,因为交换越到后面的元素所产生的的字典序"增量 ...
- LeetCode 31. 下一个排列(线性扫描)
1. 题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许使用额外 ...
- 【leetcode】1053. Previous Permutation With One Swap
题目如下: Given an array A of positive integers (not necessarily distinct), return the lexicographically ...
- leetcode 最常见的150道前端面试题(简单题下)
本文题目选自 LeetCode 精选 TOP 面试题[1],这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位). 本篇是简单题(下)20题左右,上半部分详见leet ...
- Leetcode题目分类指南(单独刷题或学习算法书籍配合使用)
Leetcode题目分类指南 笔者在学习<算法导论>同时,希望能够配合Leetcode的题目进行分类模块化练习,该分类为笔者自己根据做题学习经验,结合<算法导论>的内容,给出L ...
- [LeetCode]135.Candy
[题目] There are N children standing in a line. Each child is assigned a rating value. You are giving ...
- 【LeetCode】(55)Jump Game(Medium)
题目 Jump Game Total Accepted: 52275 Total Submissions: 194395My Submissions Question Solution Given ...
- LeetCode 刷题之路(python版)
摘自:https://blog.csdn.net/qq_32384313/article/details/90745354 LeetCode 刷题之路(python版) 小坏wz 2019-06-02 ...
最新文章
- 中科大京东最新成果:让AI像真人一样演讲,手势打得惟妙惟肖
- git bash命令_?你可能不太会用的10个Git命令
- BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流
- 新兴短距离无线通信技术ZigBee入门到进阶
- php 判断update返回为0_PHP进行数据库更新update操作,返回状态
- NSOperation的进阶使用和简单探讨
- iis服务器文件上传大小限制,windows服务器中iis限制文件大小方法
- SPFA+Dinic HDOJ 3416 Marriage Match IV
- Atitit.ui控件---下拉菜单选择控件的实现select html
- win10商店下载位置_手把手教您win10应用商店安装目录在哪的详尽处理门径
- 完整计算器java代码_计算器java代码
- seo关键词布局,网页头部优化(TDK),网站优化(古志强网络营销师)
- somachine3.1安装包和安装方法
- OpenSSH 用户枚举漏洞(CVE-2018-15919)服务器修复方法(亲测实用)
- 快速保存网页资料——fireshot与PDFdownload
- 人工智能技术的热潮让不少创业浪潮迅速崛起
- ubuntu系统下u盘只读的解决办法
- 【量化投资】策略一(聚宽)
- 手机文件怎么与电脑同步
- 适用ISO20000认证的机构有哪些?