leetcode每日一题 398. 随机数索引

leetcode每日一题 398. 随机数索引


class Solution {

  private int[] nums;

  public Solution(int[] nums) {
      this.nums = nums;
  }
   
  public int pick(int target) {
      List<Integer> list = new ArrayList<>();
      for (int i = 0; i < nums.length; i++) {
          if(nums[i] == target){
              list.add(i);
          }
      }
      Collections.shuffle(list);
      return list.get(0);
  }
}

 

用hashmap 先初始化数据,然后取值直接拿结果性能并没有提高,只有查询操作特别大的时候,性能较高,此题显然不适合
class Solution {

private Map<Integer,List<Integer>> map = new HashMap<>();

  public Solution(int[] nums) {
      for (int i = 0; i < nums.length; i++) {
          if(map.containsKey(nums[i])){
              map.get(nums[i]).add(i);
          }else {
              List<Integer> list = new ArrayList<>();
              list.add(i);
              map.put(nums[i],list);
          }
      }
  }
   
  public int pick(int target) {
      List<Integer> list = map.get(target);
      Collections.shuffle(list);
      return list.get(0);
  }
}
 

 

 

 

posted @ 2022-04-25 11:03  java架构师1  阅读(21)  评论(0)    收藏  举报