• 31. Next Permutation


    这题我记得一刷就卡过。二刷依然卡。。

    4321这样的话,说明没有下一个了,就返还1234.
    大多数情况是有下一个的,从右边开始找,找到第一个不是递增的地方,然后和右边遍历过的所有元素中,不小于他的最小元素交换。
    交换之后,找到位置右边的所有数字必须变成递增,SORT一下就可以。

    大概这么个思路,第一次做的时候这个规律墨迹了好久好久。。

    public class Solution 
    {
        public void nextPermutation(int[] nums) 
        {
            
            if(nums.length == 2)
            {
                int temp = nums[0];
                nums[0] = nums[1];
                nums[1] = temp;
                return;
            }
            
            
            for(int i = nums.length-2;i>=0;i--)
            {
                if(nums[i] < nums[i+1])
                {
    
                    
                    int min = i+1;
                    for(int j = i+1; j < nums.length;j++)
                    {
                        if(nums[j] > nums[i])
                        {
                            min = j;
                        }
                        else break;
                    }
                    
                    swap(nums,min,i);
                    Arrays.sort(nums,i+1,nums.length);
                    return;
                    
                }
            }
            
            Arrays.sort(nums);
            
            
        }
        
        public void swap(int[] nums, int a, int b)
        {
            int temp = nums[a];
            nums[a] = nums[b];
            nums[b] = temp;
        }
    }
    
  • 相关阅读:
    cull/clip distance example
    Sutherland-Hodgeman多边形裁剪
    OpenCV 脸部跟踪(3)
    人脸识别中的Procruster analysis应用
    卡尔曼滤波的原理说明
    偏导数
    泊松分布E(X^2)
    抽奖概率
    卡尔曼滤波的原理说明
    卡尔曼滤波3
  • 原文地址:https://www.cnblogs.com/reboot329/p/5971948.html
Copyright © 2020-2023  润新知