Next Permutation
leetcode吧
全部回复
仅看楼主
level 9
chipgenius 楼主
二位,Next Permutation这个题你们做了没?
我把代码贴上去之后,报错,输入是[1, 1],报错信息是“Runtime Error”
按照题设的意思,我认为输出应该是[1, 1]
但是我自己写了一个main函数,调用之后,输出就是[1, 1],并没有运行时的错误什么的,求教~
@四眼天鸡22 @飚子
2014年05月29日 07点05分 1
level 5
结果不对,死循环,数组越界,超过整型最大范围 都可能导致 runtime error。 另外我做没问题啊。 贴个我的代码:
public void nextPermutation(int[] num) { int length = num.length; int max = num[length - 1]; for (int i = length - 2; i > -1; i--) { if (num[i] >= max) { max = num[i]; for (int j = i; j < length - 1; j++) { num[j] = num[j + 1]; } num[length - 1] = max; } else { for (int j = i + 1; j < length; j++) { if (num[j] > num[i]) { int temp = num[i]; num[i] = num[j]; num[j] = temp; return; } } } } }
2014年05月29日 17点05分 2
貌似不是的....结果不对应该是Wrong Answer,死循环是Time Limit Exceed,超过整型最大范围直接就变成负数了,不会报错的……只有数组越界、使用空指针等错误才会报Runtime Error....
2014年05月30日 02点05分
回复 chipgenius :我是针对所有题来说的,这些都可能导致runtime error。
2014年06月01日 05点06分
回复 飚子 :嗯嗯,那是肯定的,我只是特指了一下leetcode的runtime error
2014年06月01日 10点06分
level 5
public void nextPermutation(int[] num) {
int length = num.length;
int max = num[length - 1];
for (int i = length - 2; i > -1; i--) {
if (num[i] >= max) {
max = num[i];
for (int j = i; j < length - 1; j++) {
num[j] = num[j + 1];
}
num[length - 1] = max;
} else {
for (int j = i + 1; j < length; j++) {
if (num[j] > num[i]) {
int temp = num[i];
num[i] = num[j];
num[j] = temp;
return;
}
}
}
}
}
2014年05月29日 17点05分 3
我研究一下,谢啦~
2014年05月30日 02点05分
改好了……原来是因为有一种特殊情况会导致不确定的后果....
2014年05月30日 02点05分
level 13
贴个自己的 java代码
public void nextPermutation(int[] nums) {
int n=nums.length;
for(int i=n-1;i>0;i--) {
if(nums[i]>nums[i-1]) {
int j=n-1;
for(j=n-1;j>i-1;j--) {
if(nums[j]>nums[i-1]) {
int temp=nums[j];
nums[j]=nums[i-1];
nums[i-1]=temp;
swap(nums,i,n-1);
return;
}
}
}
}
swap(nums,0,n-1);
return;
}
public void swap(int[] nums, int i, int j) {
while(j>i) {
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
i++;
j--;
}
return;
}
2015年06月18日 02点06分 4
level 10
贴吧里 代码要截图才能看懂...要不然排版实在是....
2015年06月19日 14点06分 5
1