临沂市网站建设,做网站怎么把背景变成纯色,专业微网站建设公司哪家好,网站文件夹目录题目 题目链接#xff1a; https://www.nowcoder.com/practice/475da0d4e37a481bacf9a09b5a059199
思路
第一步#xff1a;获取数字上每一个数#xff0c;组成数组arr
第二步#xff1a;利用“下一个排列” 问题解题方法来继续作答#xff0c;步骤#xff1a;利用lintc…题目 题目链接 https://www.nowcoder.com/practice/475da0d4e37a481bacf9a09b5a059199
思路
第一步获取数字上每一个数组成数组arr
第二步利用“下一个排列” 问题解题方法来继续作答步骤利用lintcode 52 下一个排列的解放方法从后往前找找到第一对(i,j),ij使得 nums[i] num[j] ,然后将两者交换后后面部分排序即可。Java代码
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可*** param n int整型* return int整型*/public int nextGreaterElement (int n) {//lintcode上类似的同一个道题52 · 下一个排列ListInteger 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),ij使得 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),ij使得 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 i1 size {for k : i 1; k size; k {arr1 append(arr1, arr[k])}}sort.Ints(arr1) //对i1开始到最后的数字进行排序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),ij使得 nums[i] num[j] ,//然后将两者交换后后面部分排序即可。$size count($arr);for($i$size-1;$i0;$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$i1;$k$size;$k){array_push($arr1,$arr[$k]);}sort($arr1); //对i1到size位置的数排序$ans 0;for($k0;$k$i;$k){$ans $ans*10$arr[$k];}for($k0;$kcount($arr1);$k){$ans $ans*10$arr1[$k];}return $ans;}}}return -1;
}C代码
class Solution {public:/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可*** param n int整型* return int整型*/int nextGreaterElement(int n) {vectorint ll;while (n 0) {ll.push_back(n % 10);n n / 10;}int size ll.size();vectorint arr(size);for (int i 0; i size; i) {arr[i] ll[size - i - 1];}//利用lintcode 52 下一个排列的解放方法//从后往前找找到第一对(i,j),ij使得 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()); //对i1到size位置的数排序int ans 0;for (int k 0; k size; k) {ans ans * 10 arr[k];}return ans;}}}return -1;}
};