当前位置: 首页 > news >正文

牛客NC324 下一个更大的数(三)【中等 双指针 Java/Go/PHP/C++】参考lintcode 52 · 下一个排列

题目

在这里插入图片描述
题目链接:
https://www.nowcoder.com/practice/475da0d4e37a481bacf9a09b5a059199

思路

第一步:获取数字上每一个数,组成数组arr
第二步:利用“下一个排列” 问题解题方法来继续作答,步骤:利用lintcode 52 下一个排列的解放方法从后往前找,找到第一对(i,j),i<j,使得 nums[i] < num[j] ,然后将两者交换后,后面部分排序即可。

Java代码

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param n int整型* @return int整型*/public int nextGreaterElement (int n) {//lintcode上类似的同一个道题52 · 下一个排列List<Integer> ll = new ArrayList<>();while (n > 0) {int mod = n % 10;n = n / 10;ll.add(mod);}int size = ll.size();int[] arr = new int[size];for (int i = 0; i < size ; i++) {arr[i] = ll.get(size - i - 1);}//利用lintcode 52 下一个排列的解放方法//从后往前找,找到第一对(i,j),i<j,使得 nums[i] < num[j] ,//然后将两者交换后,后面部分排序即可。for (int i = size - 1; i >= 0 ; i--) {for (int j = size - 1; j > i ; j--) {if (arr[i] < arr[j]) {int t = arr[i];arr[i] = arr[j];arr[j] = t;Arrays.sort(arr, i + 1, size);String s = "";for (int i1 : arr) {s += i1;}//这个位置lintcode52是return arrreturn Integer.valueOf(s);}}}return -1; //这个位置lintcode52是return 排序后的arr}
}

Go代码

package mainimport "sort"/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param n int整型* @return int整型*/
func nextGreaterElement(n int) int {//类似的题目是lintcode 52下一个排列ll := []int{}for n > 0 {mod := n % 10n = n / 10ll = append(ll, mod)}size := len(ll)arr := make([]int, size)for i := 0; i < size; i++ {arr[i] = ll[size-i-1]}//利用lintcode 52 下一个排列的解放方法//从后往前找,找到第一对(i,j),i<j,使得 nums[i] < num[j] ,//然后将两者交换后,后面部分排序即可。for i := size - 1; i >= 0; i-- {for j := size - 1; j > i; j-- {if arr[i] < arr[j] {t := arr[i]arr[i] = arr[j]arr[j] = tarr1 := []int{}if i+1 < size {for k := i + 1; k < size; k++ {arr1 = append(arr1, arr[k])}}sort.Ints(arr1) //对i+1开始到最后的数字进行排序ans := 0for k := 0; k <= i; k++ {ans = ans*10 + arr[k]}for k := 0; k < len(arr1); k++ {ans = ans*10 + arr1[k]}return ans}}}return -1
}

PHP代码

<?php/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param n int整型 * @return int整型*/
function nextGreaterElement( $n )
{//类似的同一道题是lintcode 52 下一个排列$arr = [];while ($n >0){$mod = $n%10;$n =intval($n/10);array_unshift($arr,$mod);}//利用lintcode 52 下一个排列的解放方法//从后往前找,找到第一对(i,j),i<j,使得 nums[i] < num[j] ,//然后将两者交换后,后面部分排序即可。$size = count($arr);for($i=$size-1;$i>=0;$i--){for($j=$size-1;$j>$i;$j--){if($arr[$i] < $arr[$j]){$t = $arr[$i];$arr[$i] = $arr[$j];$arr[$j]= $t;$arr1 = [];for($k=$i+1;$k<$size;$k++){array_push($arr1,$arr[$k]);}sort($arr1); //对i+1到size位置的数排序$ans = 0;for($k=0;$k<=$i;$k++){$ans = $ans*10+$arr[$k];}for($k=0;$k<count($arr1);$k++){$ans =$ans*10+$arr1[$k];}return $ans;}}}return -1;
}

C++代码

class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param n int整型* @return int整型*/int nextGreaterElement(int n) {vector<int> ll;while (n > 0) {ll.push_back(n % 10);n = n / 10;}int size = ll.size();vector<int> arr(size);for (int i = 0; i < size; i++) {arr[i] = ll[size - i - 1];}//利用lintcode 52 下一个排列的解放方法//从后往前找,找到第一对(i,j),i<j,使得 nums[i] < num[j] ,//然后将两者交换后,后面部分排序即可。for (int i = size - 1; i >= 0; i--) {for (int j = size - 1; j > i; j--) {if (arr[i] < arr[j]) {int t = arr[i];arr[i] = arr[j];arr[j] = t;std::sort(arr.begin() + i + 1, arr.end()); //对i+1到size位置的数排序int ans = 0;for (int k = 0; k < size; k++) {ans = ans * 10 + arr[k];}return ans;}}}return -1;}
};

相关文章:

牛客NC324 下一个更大的数(三)【中等 双指针 Java/Go/PHP/C++】参考lintcode 52 · 下一个排列

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/475da0d4e37a481bacf9a09b5a059199 思路 第一步&#xff1a;获取数字上每一个数&#xff0c;组成数组arr 第二步&#xff1a;利用“下一个排列” 问题解题方法来继续作答&#xff0c;步骤&#xff1a;利用lintc…...

Vue3解决“找不到模块“@/components/xxx.vue”或其相应的类型声明”

文章目录 前言背景问题描述解决方案总结 前言 在使用 Vue 3 开发项目时&#xff0c;遇到“找不到模块 ‘/components/xxx.vue’ 或其相应的类型声明”的错误是一个常见问题。这通常与 TypeScript 和模块解析相关的配置不当有关。本文将详细介绍如何解决此问题&#xff0c;确保…...

nginx的Connection refused

问题描述 nginx的错误日志中突然出现大量的的Connection refused问题&#xff0c;日志如下&#xff1a; 2020/03/19 09:52:53 [error] 20117#20117: *7403411764 connect() failed (111: Connection refused) while connecting to upstream, client: xxx.xxx.xxx.xxx, server:…...

Haskell 的高阶函数(Higher-order functions)

本节继续介绍Haskell的知识&#xff0c;本节内容介绍的是高阶函数&#xff08;Higher-order functions&#xff09;的概念和应用。高阶函数是指能够接受其他函数作为参数&#xff0c;或者返回函数作为结果的函数。 Functions as values&#xff08;函数作为值&#xff09;&…...

Unity websocket客户端

&#x1f3c6; 个人愚见&#xff0c;没事写写笔记 &#x1f3c6;《博客内容》&#xff1a;Unity3D开发内容 &#x1f3c6;&#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f50e;目标&#xff1a;服务器和客户端可以实时的传输信息 ☀️实现目标&#xff1a; 使用的w…...

每日一题——博弈论(枚举与暴力)

博弈论 题目描述 运行代码 #include<iostream> #include<vector> using namespace std; int main(){int n;cin >> n;vector<int> d(n,0);for(int i 0;i < n;i){cin >> d[i];}vector<int> in(1000,0);for(int k 1;k<3;k){for(int…...

pytorch笔记:torch.nn.Flatten()

1 介绍 torch.nn.Flatten(start_dim1, end_dim-1) 将一个连续的维度范围扁平化为一个张量 start_dim (int)要开始扁平化的第一个维度&#xff08;默认值 1&#xff09;end_dim (int)要结束扁平化的最后一个维度&#xff08;默认值 -1&#xff09; 2 举例 input torch.ra…...

一个人应该怎么操作抖音小店呢?店铺操作流程给你讲解清楚!

大家好&#xff0c;我是电商小V 现在入驻抖音小店的有很多新手&#xff0c;新手最关心的就是一个人应该如何操作抖音小店&#xff0c;操作抖音小店需要做好哪几步呢&#xff1f;关于这个问题咱们就来详细的讲解一下&#xff0c; 第一点&#xff1a;开店 开店是做店的第一步&…...

“等保测评与安全运维的协同:保障企业网络安宁

"等保测评与安全运维的协同&#xff1a;保障企业网络安宁"是一个涉及信息安全领域的重要话题。这里&#xff0c;我们可以从几个方面来探讨这个主题。 1. 等保测评&#xff08;等级保护测评&#xff09; 等保测评&#xff0c;即信息安全等级保护测评&#xff0c;是依…...

python抽取pdf中的参考文献

想将一份 pdf 论文中的所有参考文献都提取出来&#xff0c;去掉不必要的换行&#xff0c;放入一个 text 文件&#xff0c;方便复制。其引用是 ieee 格式的&#xff0c;形如&#xff1a; 想要只在引用序号&#xff08;如 [3]&#xff09;前换行&#xff0c;其它换行都去掉&…...

Java进阶学习笔记21——泛型概念、泛型类、泛型接口

泛型&#xff1a; 定义类、接口、方法的时候&#xff0c;同时声明了一个或者多个类型变量&#xff08;如: <E>&#xff09;,称之为泛型类、泛型接口、泛型方法&#xff0c;我们统称之为泛型。 说明这是一个泛型类。 如果不使用泛型&#xff0c;我们可以往ArrayList中传…...

深入理解计算机系统 家庭作业4.55

...

第二天-⑦前后端需要注意的事项

①防xss跨站脚本攻击...

Socket 函数详细讲解(Socket编程步骤、socket函数、TCP和UDP的区别)

Socket 函数详细讲解和 C 示例 一、 Socket 基本概念1. Socket 简介2. Socket 编程步骤3. TCP Socket 编程示例服务器端客户端 4. 详细说明 二、 socket 函数1. domain 通讯的协议家族2. type 数据传输的类型3. protocol 最终使用的协议返回值示例 三、TCP 和 UDP的区别1. TCP&…...

【限免】杂波环境下线性调频脉冲、巴克码、频率步进脉冲雷达MTI、脉冲压缩【附MATLAB代码】

来源&#xff1a;微信公众号&#xff1a;EW Frontier 本代码主要模拟杂波环境&#xff08;飞机、地杂波、鸟类信号&#xff09;下&#xff0c;Chirp脉冲、巴克码脉冲、频率步进脉冲雷达信号的脉冲压缩及MTI、​匹配滤波。 MATLAB主代码 % 定义参数 fs 1000; % 采样率 T 1; …...

前端最新面试题(Javascript模块篇)

目录 1 数据类型基础 1.1 JS内置类型 1.2 null和undefined区别 1.3 null是对象吗?为什么? 1.4 1.toString()为什么可以调用? 1.5 0.1+0.2为什么不等于0.3?如何让其相等 1.6 如何理解BigInt 1.7 JS 整数是怎么表示的 1.8 Number() 的存储空间是多大?如果后台发送了…...

Android11热点启动和关闭

Android官方关于Wi-Fi Hotspot (Soft AP) 的文章&#xff1a;https://source.android.com/docs/core/connect/wifi-softap?hlzh-cn 在 Android 11 的WifiManager类中有一套系统 API 可以控制热点的开和关&#xff0c;代码如下&#xff1a; 开启热点&#xff1a; // SoftApC…...

DI-engine强化学习入门(三)DI-ZOO强化学习环境搭建与示例运行——Atari

Atari是一家知名的电子游戏公司&#xff0c;成立于1972年&#xff0c;是早期电子游戏产业的先驱之一。在强化学习领域&#xff0c;提到Atari通常指的是Atari 2600游戏的一系列环境&#xff0c;这些环境是用于开发和测试强化学习算法的标准平台。 Atari 2600 强化学习环境概述 …...

【一站式学会Kotlin】第十节:kotlin 语言的可控性特点和安全调用操作符

作者介绍: 百度资深Android工程师T6,在百度任职7年半。 目前:成立赵小灰代码工作室,欢迎大家找我交流Android、微信小程序、鸿蒙项目。= 一:通俗易懂的人工智能教程:https://www.captainbed.cn/nefu/ 点一下,打开新世界的大门。 二:【一站式学会Kotlin】免费领取:作者…...

PaddleClas 指定gpu

在使用PaddleClas进行模型训练或预测时&#xff0c;如果您想要指定使用特定的GPU设备&#xff0c;可以通过CUDA_VISIBLE_DEVICES环境变量来设置。 在命令行中设置GPU的方法如下&#xff1a; # 指定第0号GPU export CUDA_VISIBLE_DEVICES0 # 之后运行PaddleClas的命令&#xf…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...