考试记录
转换问题
Integer
的list
转为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()); }