11.29第一个记录

Leetcode 941

有效山脉

  • 题目要求:给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。
  • 如果 A 满足下述条件,那么它是一个山脉数组:
  1. A.length >= 3
  2. 在 0 < i < A.length - 1 条件下,存在 i 使得:
    • A[0] < A[1] < … A[i-1] < A[i]
    • A[i] > A[i+1] > … > A[A.length - 1]
      Alt

我的代码

public boolean validMountainArray(int[] arr) {
        int N = arr.length;
        int i=0;
        while(i+1<N && arr[i]<arr[i+1]){
            i++;
        }
        if(i==0 || i==N-1){
            return false;
        }
        else{
            while(arr[i]>arr[i+1])
                i++;
            if(i == N-1) return true;
            else return false;
        }
    }

Leetcode 349

两数组交集

  • 给定两个数组,编写一个函数来计算它们的交集。

示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4]

说明:
输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。

参考代码

public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set1 = new HashSet<Integer>();
        Set<Integer> set2 = new HashSet<Integer>();
        for (int num : nums1) {
            set1.add(num);
        }
        for (int num : nums2) {
            set2.add(num);
        }
        return getIntersection(set1, set2);
    }

    public int[] getIntersection(Set<Integer> set1, Set<Integer> set2) {
        if (set1.size() > set2.size()) {
            return getIntersection(set2, set1);
        }
        Set<Integer> intersectionSet = new HashSet<Integer>();
        for (int num : set1) {
            if (set2.contains(num)) {
                intersectionSet.add(num);
            }
        }
        int[] intersection = new int[intersectionSet.size()];
        int index = 0;
        for (int num : intersectionSet) {
            intersection[index++] = num;
        }
        return intersection;
    }

我的代码(模仿,仍集合方法)

public int[] intersection(int[] nums1, int[] nums2) {
    if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) {
      return new int[0];
    }
    Set<Integer> parentSet = new HashSet<>();
    Set<Integer> childSet = new HashSet<>();
    for (int num : nums1) {
      parentSet.add(num);
    }
    for (int num : nums2) {
      if (parentSet.contains(num)) {
        childSet.add(num);
      }
    }
    int[] resArr = new int[childSet.size()];
    int index = 0;
    for (int value : childSet) {
      resArr[index++] = value;
    }
    return resArr;
  }

猜你喜欢

转载自blog.csdn.net/weixin_46338641/article/details/110357906