• leetcode556—— Next Greater Element III (JAVA)


    Given a positive 32-bit integer n, you need to find the smallest 32-bit integer which has exactly the same digits existing in the integer n and is greater in value than n. If no such positive 32-bit integer exists, you need to return -1.

    Example 1:

    Input: 12
    Output: 21
    

    Example 2:

    Input: 21
    Output: -1
    转载注明出处:http://www.cnblogs.com/wdfwolf3/,谢谢。
    时间复杂度O(n),空间复杂度O(n),5ms。
    public int nextGreaterElement(int n){
            //如果是1位整数,直接返回-1,同时加上了10和11
            if(n <= 11){
                return -1;
            }
            //转化为char数组,方便处理数字
            char[] nums = (n+"").toCharArray();
            int i = nums.length - 2;
            //从后往前找到第一个升序的位数
            for (; i >= 0; i--) {
                if (nums[i] < nums[i+1]) {
                    break;
                }
            }
            //如果没有即不存在,返回-1
            if(i < 0){
                return -1;
            }
            int j = nums.length -1;
            //从后往前查找第一个比i大的数字,这样找出来的是所有大于i数字中的最小值
            for (; j > i; j--) {
                if(nums[i] < nums[j]){
                    break;
                }
            }
            //交换i,j位置的数字
            char tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
            //i之后的数字排序,让结果最小
            Arrays.sort(nums, i, nums.length);
            //有可能交换后越界,使用long类型判断一下
            long ans = Long.parseLong(new String(nums));
            return (ans>Integer.MAX_VALUE)?-1:((int)ans);
        }
     
  • 相关阅读:
    window.onload 、body.onload 以及 jQuery 等dom加载完成后执行脚本的区别
    HTML5事件-pageshow 和 pagehide
    动态加载script 和 link
    递归 recursive
    HTML5事件-自定义右键菜单
    left与margin-left区别
    偏移量、客户区、滚动大小
    屏幕适配
    KVC和KVO
    HUD总结
  • 原文地址:https://www.cnblogs.com/wdfwolf3/p/6837445.html
Copyright © 2020-2023  润新知