LeetCode 1053. 交换一次的先前排列

1. 题目

给你一个正整数的数组 A(其中的元素不一定完全不同),请你返回可在 一次交换(交换两数字 A[i] 和 A[j] 的位置)后得到的、按字典序排列小于 A 的 最大可能排列。

如果无法这么操作,就请返回原数组。

示例 1:
输入:[3,2,1]
输出:[3,1,2]
解释:
交换 21示例 2:
输入:[1,1,5]
输出:[1,1,5]
解释: 
这已经是最小排列示例 3:
输入:[1,9,4,6,7]
输出:[1,7,4,6,9]
解释:
交换 97示例 4:
输入:[3,1,1,3]
输出:[1,3,1,3]
解释:
交换 13提示:
1 <= A.length <= 10000
1 <= A[i] <= 10000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/previous-permutation-with-one-swap
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:LeetCode 31. 下一个排列(线性扫描)

注意题目说,只能交换一次

  • 新的字典序要小于A,要找一个A的 后部小的 r 跟 前面大的 l 交换
  • 为了最大,当后序有满足的下降时,还要更新要交换的位置(【3,1,3,1】–>【3,1,1,3】),这两个3,1,选取更靠后的下降
  • 当有比左端点l小,但是比右端点r大的,更新右端点(【3,1,3,1,2】–>【3,1,2,1,3】),后面的3,1,可以交换,又遇到了比 3 (l)小,比 1 (r)大的 2,那么更新 r 为 2,获得更大的字典序
class Solution {	//C++
public:vector<int> prevPermOpt1(vector<int>& A) {int i = 0, l = 0, r = 0;for(i = 1; i < A.size(); ++i){if(A[i-1] > A[i])//遇到下降, 更新, l,r越靠后越好l = i-1, r = i;//后序找到小于 A[l] 的数, 但是大于 A[r]的,//    用更大的与 l 交换,得到更大的字典序else if(A[i] < A[l] && A[i] > A[r])r = i;}swap(A[l], A[r]);return A;}
};

64 ms 23.7 MB

class Solution:# py3def prevPermOpt1(self, A: List[int]) -> List[int]:l, r = 0, 0for i in range(1,len(A)):if A[i-1] > A[i]:l, r = i-1, ielif A[i] < A[l] and A[i] > A[r]:r = it = A[l]A[l] = A[r]A[r] = treturn A

356 ms 14.9 MB

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

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

相关文章

bootstrap 树形表格渲染慢_layUI之树状表格异步加载组件treetableAsync.js(基于treetable.js)...

概述后台框架中使用树状表格是非常常用的操作&#xff0c;layUI本身并没有这种组件。 第三方的treetable.js做到了完美的实现&#xff0c;但是不能实现在双击时异步加载数据&#xff0c;本文就是站在了巨人的肩膀上实现的异步加载的树状表格~1. 使用说明本组件基于treetable.js…

EchoServer

using System;using System.Net.Sockets;using System.IO;using System.Net; namespace ConsoleApplication1{ class EchoServer { public static void Main11() { // TcpListener监听端口1234 IPAddress ipAd IPAddress.Parse(&qu…

hive - 解析 json

内置函数&#xff1a;get_json_object(json串,解析路径) 解析路径说明&#xff1a; $ :跟对象 . :子对象 [] :数组下标 * :所有 举例&#xff1a; 数据样例&#xff1a; {"movie":"1190","rate":"4.8","timestamp":…

[scikit-learn 机器学习] 6. 逻辑回归

文章目录1. 逻辑回归二分类2. 垃圾邮件过滤2.1 性能指标2.2 准确率2.3 精准率、召回率2.4 F1值2.5 ROC、AUC3. 网格搜索调参4. 多类别分类5. 多标签分类5.1 多标签分类性能指标本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记逻辑回归常用于分类任务 1. 逻…

libsvm回归参数寻优cgp_【lightgbm/xgboost/nn代码整理二】xgboost做二分类,多分类以及回归任务...

1.简介该部分是代码整理的第二部分&#xff0c;为了方便一些初学者调试代码&#xff0c;作者已将该部分代码打包成一个工程文件&#xff0c;包含简单的数据处理、xgboost配置、五折交叉训练和模型特征重要性打印四个部分。数据处理部分参考&#xff1a;代码整理一&#xff0c;这…

hive - 可优化的 10 个地方及详解

1.合理选择排序 排序算法比较耗资源&#xff0c;应根据业务需要选择 order by :全局排序&#xff0c;大数据集会消耗太过漫长的时间sort by&#xff1a;局部排序&#xff0c;只能保证每个reducer的输出数据都是有序的distribute by&#xff1a;分桶不排序&#xff0c;控制map…

[scikit-learn 机器学习] 7. 朴素贝叶斯

文章目录1. 朴素贝叶斯2. NB 与 逻辑回归对比本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记相关知识参考&#xff1a;《统计学习方法》朴素贝叶斯法&#xff08;Naive Bayes&#xff0c;NB&#xff09; 1. 朴素贝叶斯 通过最大概率来预测类&#xff1a…

堕落的时候看看——清华大学老师的一席话

一双鞋&#xff0c;耐克的6百多&#xff1b;李宁的4百多&#xff1b;特步的3百多&#xff1b;361的2百多&#xff1b;所以&#xff0c;你毕业于一个什么样的大学很重要。 一双鞋&#xff0c;在地摊不过几十元&#xff0c;到了商场、专卖店&#xff0c;会涨到一百甚至几百。所以…

塔菲克蓝牙适配器驱动_小身材,大功能,biaze毕亚兹USB蓝牙适配器开箱体验

在日常生活中&#xff0c;我们平时使用的台式电脑或是笔记本电脑&#xff0c;想要传输数据或者音频的时候&#xff0c;都是需要借助数据传输线或是U盘等传输设备&#xff0c;使用过程可想而知&#xff0c;有点麻烦。我们都知道&#xff0c;手机是有蓝牙传输功能的&#xff0c;只…

MySQL - cast()函数

日常建表习惯用 create tabel tb_name as select......&#xff0c;这种建表方式的其中一个缺点就是&#xff1a;系统会根据查询出的字段&#xff0c;定义字段类型。有时候会把 %Y-%m-%d 格式的日期字段定义为 varchar 。建模的时候苦不堪言。 那么怎么在建表过程中自己定义每…

HDU1003——MAX SUM

简单DP&#xff0c;状态转移公式&#xff1a;num[j].data max{num[j].data, num[j].datanum[j-1].data}&#xff0c;也就是保证加上前一个数不失自己的值减小。 View Code #include <stdio.h>#define N 100010#define inf 9999999struct _num{int data;int pre;int nex…

[scikit-learn 机器学习] 8. 非线性分类和决策树

文章目录1. 特征选择标准2. 网页广告预测2.1 数量处理2.2 网格搜索模型参数3. 决策树优缺点本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记相关知识&#xff1a;《统计学习方法》决策树&#xff08;Decision Tree&#xff0c;DT&#xff09; 1. 特征选择…

智慧新泰时空大数据与云平台_智慧警务大数据云平台开发情报研判系统解决方案...

智慧公安作为公安信息化开展到高级阶段的一种警务形态&#xff0c;“智慧公安”主要采用物联网、云计算、无线通讯、智能动态感知分析等新一代信息技术,将公安工作IT根底设备与物理设备、人际环境等高度交融,以提供智能化公安决策与效劳。智慧警务大数据云平台开发情报研判系统…

RGB颜色查询对照表#FFFFFF

大致是下图这样的&#xff0c;有需要的可以点击下面的连接复制使用&#xff1a; https://www.114la.com/other/rgb.htm

ikbc机械键盘打字出现重复_超小无线机械键盘,绝佳移动打字体验

NuType筹资信息产品名称NuType上线平台Kickstarter发起团队NUPHY发起地区中国香港目标金额80,000HKD筹集金额1,301,212HKD完全进度1,627%支持人数1,612最低价格697HKD上线时间2019/11/13-2019/12/28创次方/制表时间&#xff1a;2019年12月28日文/大智笔电键盘的打字体验远不及桌…

英语语法之形容词从句:定语从句

形容词从句:定语从句 限制和非限制性定语从句 ----------------------------------------------------------------------------- 限制和非限制性定语从句: 限制性定语从句是名词词组不可缺少的一个组成部分,去掉了会造成病句或意义不明确; 非限制性定语从句属于补充说明性质…

MySQL - 定时任务(每天凌晨1点、每小时、每分钟、某一时间点)

常用的一定要写在前面 # 从2019-10-11开始&#xff0c;每天的00:30:00执行定时任务 ON SCHEDULE EVERY 1 DAY STARTS 2019-10-11 00:30:00 # 每天的凌晨1点执行定时任务 ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)# 特…

数据库中的null和c#中的null

再向数据库中插入数据时&#xff0c;如果插入c#中的null会报错&#xff0c;需要转换成SQl中的DBNull.Value public static object ToDbNull(object value) { if (value null || value.ToString() DateTime.MinValue.ToString()) { …

极光无限渗透测试面经_认识工业以太网及线缆测试

工业以太网由于其固有的可靠性、高性能和互操作性&#xff0c;已经渗透到工厂车间&#xff0c;成为自动化和控制系统的首选通信协议。近年&#xff0c;工业以太网的市场份额已经超过了传统的现场总线协议&#xff0c;总线协议通常需要多个独立和专有的布线设施。为了满足工业环…

mysql_根据身份证号识别性别、年龄、所在省份

1.性别&#xff1a; IF(mod(SUBSTR(c.reciver_idcard_num,17,1),2),man,woman) 性别, 2. 年龄&#xff1a; CASE WHEN c.reciver_idcard_num <> THEN (YEAR(CURDATE()) - SUBSTRING(c.reciver_idcard_num,7,4)) ELSE NULL END AS 年龄, 3. 所属省份&#xff1a; CAS…