zoukankan      html  css  js  c++  java
  • 496. Next Greater Element I

    Question

    496. Next Greater Element I

    Solution

    题目大意:给你一个组数A里面每个元素都不相同。再给你一个数组B,元素是A的子集,问对于B中的每个元素,在A数组中相同元素之后第一个比它的元素是多少。
    思路:把nums1中的元素存储到一个map里,遍历nums2,如果能从map中取到值,就遍历nums2中后续元素的值并与当前元素做比较,如果存在比当前元素大的值就取该值(第一个),否则返回-1.
    Java实现:

    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int tmp : nums1) {
            map.put(tmp, -1);
        }
        for (int i = 0; i < nums2.length; i++) {
            int tmp = nums2[i];
            Integer nextGreaterElement = map.get(tmp);
            if (nextGreaterElement != null) {
                for (int j=i+1; j<nums2.length; j++) {
                    if (tmp < nums2[j]) {
                        nextGreaterElement = nums2[j];
                        break;
                    }
                }
                map.put(tmp, nextGreaterElement);
                // System.out.println(tmp + ", " + nextGreaterElement);
            }
        }
        // System.out.println();
        int[] result = new int[nums1.length];
        for (int i = 0; i < nums1.length; i++) {
            result[i] = map.get(nums1[i]);
            // System.out.print(result[i] + ",");
        }
        return result;
    }
    
  • 相关阅读:
    7 文件操作
    初识字典1
    软件工程学习进度
    AAAA
    软件工程期末总结
    【操作系统】实验四 主存空间的分配和回收 截止提交时间:2016.6.17
    约教网站开发(一)
    操作系统实验三
    .Scrum团队成立
    数学精灵改进
  • 原文地址:https://www.cnblogs.com/okokabcd/p/9265507.html
Copyright © 2011-2022 走看看