考试记录

转换问题

  1. Integerlist转为int[]
public int[] intersect(int[] nums1, int[] nums2) {
    List<Integer> list = new ArrayList<>();
    // list.add();
    return list;
    
    return list.stream().mapToInt(Integer::intValue).toArray();
}

处理巧妙问题

  • 巧妙利用递归简化问题

    class Solution {
        public int[] intersect(int[] nums1, int[] nums2) {
            if (nums1.length > nums2.length) {
                return intersect(nums2, nums1);
            }
            //处理nums1.length > nums2.length
        }
    }
    
  • 考虑好边界问题

    public static int findShortestSubArray(int[] nums) {
        if (nums.length == 1){
            return 1;
        }
        return ans;
    }
    

Map集合

初始化Map集合

  • 添加key出现的个数

    Map<Integer,Integer> map = new HashMap<>();
    for (int i = 0; i < nums.length; i++) {
        map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
    }
    

Map集合通过value获取key

  • 循环法

    //唯一值
    private <K, V> K getKeyByLoop(Map<K, V> map, V value) {
      for (Map.Entry<K, V> entry : map.entrySet()) {
        if (Objects.equals(entry.getValue(), value)) {
          return entry.getKey();
        }
      }
      return null;
    }
    //多个值
    private <K, V> Set<K> getKeysByLoop(Map<K, V> map, V value) {
      Set<K> set = Sets.newHashSet();
      for (Map.Entry<K, V> entry : map.entrySet()) {
        if (Objects.equals(entry.getValue(), value)) {
          set.add(entry.getKey());
        }
      }
      return set;
    }
    
  • Stream方法

    private <K, V> Set<K> getKeysByStream(Map<K, V> map, V value) {
      return map.entrySet()
        .stream()
        .filter(kvEntry -> Objects.equals(kvEntry.getValue(), value))
        .map(Map.Entry::getKey)
        .collect(Collectors.toSet());
    }
    
posted @ 2022-04-23 23:21  蔚蓝的海洋  阅读(32)  评论(0编辑  收藏  举报