集合 HashSetLeetCode刷题已经有一段时间了,作为一名非科班选手,从一开始对数据结构的一窍不通,到现在逐渐能熟练使用一些数据结构解题。
现在将平时积累的一些刷题常用数据结构分享给大家。可供入门/新手/非科班选手参考。
- set常常在去重相关的题目中用到
HashSetHashMapset = new HashSet<>();//新建一个set集合,常常在去重的题目中 set.add() //往set中添加元素 set.remove() //set中去除元素 set.contains() //常用于判断set中是否包含某个元素 set.size() //set的长度,大小 for(int i:set1){ //遍历set的一种方式 }
- HashMap常常在需要键值对映射的题目中用到
Map栈 流行的栈写法map = new HashMap<>(); map.put(key,value);//map中放入 key-value键值对 map.get(key); //获取某个key对应的value map.containsKey(key) //经常用于判断,是否包含某个key值
Deque补充一个写法stack = new LinkedList<>(); //官方已经不建议用stack()来实现栈,当前用LinkedList<>(); 实现 stack.push(xx);//进栈 a = stack.pop();//出栈,并发栈该值赋给另外一个变量。
- 这个写法也是由LinkedList<>()实现。
LinkedList优先队列path = new LinkedList<>(); path.removeLast();//似乎只有上面这种初始化方式才可以用removeLast()方法
- 这里还附加了一个比较器,(利用lambda表达式重写compare方法) o1-o2代表升序,o2-o1代表降序
PriorityQueue字符串pq = new PriorityQueue<>(new Comparator (){ @Override public int compare(ListNode o1,ListNode o2){ return o1.val - o2.val; } });//注意这个序号关系,compare方法定义在Comparator里面 pq.add(list);//增 ListNode nodeNext = pq.poll();//删
- 内容比较多,有空再整理



